Research any domain

Any domain the way the big indexes read it, the AI answer index, any business on the map, and link prospects.

Embed
Preview of the card
<a href="https://seolyticize.com/docs/research-any-domain"><img src="https://seolyticize.com/docs/_api/public/orgs/71cb2b7a-a719-4003-b3ea-6321dc1db8ab/spaces/3bf2dbf7-3faa-473c-ba3b-30588f5f8de4/pages/734af0e8-eda2-4209-a5d0-5ec41cbe9232/social-card.svg?v=3e7ae33eec8b" alt="Research any domain" width="600" height="315"></a>

The tools on this page work on any domain, keyword or business, managed or not. Each still takes a clientId, because the paid lookups are billed to that client's DataForSEO account and every result is kept with the client. Most of them spend money: quote each call with estimate_cost {tool, arguments} and pass the quote as maxCostMicros. A lookup anyone on Seolyticize bought recently is served free, and the result's spend says which.

A domain, the way the big indexes read it

target is a domain (rival.com), a subfolder (rival.com/blog/) or a page URL, and defaults to the client's own domain.

get_domain_overview {clientId, target, historyMonths: 12}    → organic and paid keywords, traffic and its value, positions, a monthly history
get_ranked_keywords {clientId, target}                       → every keyword it ranks for, with position, URL, traffic, volume and intent
get_ranked_keywords {clientId, target, resultType: "ai_overview_reference"}   → the keywords whose AI Overview cites it
get_top_pages {clientId, target}                             → its pages by estimated traffic
get_backlink_history {clientId, target}                      → backlinks and referring domains month by month
get_keyword_metrics {clientId, keywords: [...]}              → volume, CPC, difficulty and intent for up to 700 known keywords
get_serp_history {clientId, keyword}                         → who ranked for a keyword on past dates
get_keyword_advertisers {clientId, keyword}                  → the ads shown for a keyword now, and who runs them

Over REST:

curl -X POST https://seolyticize.com/api/v1/tools/get_ranked_keywords \
  -H "Authorization: Bearer $SEOLYTICIZE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"clientId": "client_123", "target": "rival.com/blog/", "change": "new", "sort": "traffic", "limit": 50, "maxCostMicros": 50000}'

The AI answer index

DataForSEO keeps a database of real AI answers. These tools read it, with no question tracking set up first. platform is google (AI Overviews) or chat_gpt.

get_ai_brand_mentions {clientId, brands: [{name, domains}]}   → share of voice in AI answers for the client and up to nine rivals
get_ai_prompt_research {clientId, keyword}                    → real questions people ask AI, with the sources and brands in each answer
get_ai_search_volume {clientId, keywords: [...]}              → how often a topic is asked of AI, with 12 months of history
get_ai_top_cited_domains {clientId, topic}                    → the sites AI answers cite on a topic: the outreach and PR list
get_ai_mode_answer {clientId, keyword}                        → Google AI Mode's answer and every source it cites
get_llm_responses {clientId, prompt, platforms}               → ask ChatGPT, Claude, Gemini and Perplexity live, with what each cited

To start tracking AI visibility from the client's own data, suggest_ai_visibility_setup {clientId} drafts the brand, the competitors and starter questions. Nothing is saved until you call it again with apply: true. Once runs exist, get_ai_cited_sources {clientId} lists who the assistants cite and who owns each source, get_ai_visibility_sentiment {clientId} reads how the answers speak of the brand, and assess_ai_visibility_sentiment {clientId} (paid, one Claude call per answer) judges the answers not yet judged.

Any business on the map

business is a name (best with the town), or cid:… / place_id:… for an exact listing.

get_business_profile {clientId, business}                     → categories, hours, rating spread, attributes, claimed, review topics
search_local_businesses {clientId, lat, lng, radiusKm, categories}   → every business within a radius
get_local_categories {clientId, lat, lng}                     → the categories used nearby, and the attributes common among them
get_maps_results {clientId, keyword}                          → Maps or Local Finder results from one point, and where the client sits
get_business_questions {clientId, business}                   → the listing's Q&A, unanswered questions counted
get_business_reviews {clientId, business}                     → queues the reviews; call again with the taskId to collect them free

For the map pack across a whole town, a grid scan is still the tool: see Local, links and logs.

get_competitor_broken_pages {clientId, domain}       → a rival's dead pages that other sites still link to
get_outbound_domains {clientId, domain}              → the domains a site links out to
get_forum_opportunities {clientId, keywords}         → Reddit, Quora and forum threads ranking for the client's keywords
search_web_content {clientId, keyword}               → pages on the web that mention a phrase, with sentiment and domain rank

get_competitor_broken_pages with source: "index" reads our own crawl, which is free but covers only pages we have fetched. Keep the prospects you mean to contact with add_link_prospects, so a person and an agent work from the same list.

Content from the research

research_topic {clientId, seed}                              → subtopics, questions and the headlines ranking now
get_personal_keyword_difficulty {clientId, keywords}         → how hard each keyword is for this site, not for an average one
forecast_keyword_traffic {clientId, keywords: [{term}]}      → clicks at positions 1, 3, 5 and 10, month by month (free)
draft_article {clientId, keyword}                            → a Markdown draft grounded in the content brief (a paid Claude call)
rewrite_section {clientId, keyword, section, draft}          → a section rewritten or extended to cover what the score finds missing
suggest_meta_tags {clientId}                                 → titles and descriptions for a whole crawl's missing, duplicate or overlong tags

Score every draft with score_content before it is published, and have a person read it: see What to fix, what to write.

Updated