API

AI Results Tracker – Competitors

AIRT Competitors API, part of the AI Results Tracker (AIRT), provides programmatic access to the per-prompt, per-day Competitors view: which brands and source URLs appear in AI answers for a tracked prompt over time, with a cached HTML copy of the answer page for human verification.

All endpoints are engine-scoped (llm_id). To inspect a prompt across several engines, list the engines via List LLM engines and iterate.

Using the API, you can:

  • retrieve the brands and source URLs cited in an AI answer for a prompt across a date range
  • list the dates on which a prompt was checked, so you can skip empty periods
  • get SEO metrics (Domain Trust, referring domains, organic keywords) for the cited sources

Note:

  • prompt_llm_id values come from the prompt_llm_id field of List prompts. The prompt_id field is a different value and is not accepted.
  • The full answer text is not returned by these endpoints. Fetch it per (prompt, date) via Get prompt answer; the has_answer_text flag tells you whether it is still available.

Data retention:

  • Cached HTML copy: 30 days (has_cached_copy).
  • Answer text: 1 year (has_answer_text).

Get competitors breakdown

GET https://api.seranking.com/v1/project-management/airt/competitors

Cost: 0. Retrieving competitors data does not consume API credits or subscription quota.

For each requested prompt over a date range, returns one entry per check date with:

  • Brands mentioned in the AI answer, ordered as displayed
  • Source URLs cited in the answer, ordered as displayed
  • Cached copy URL for human verification (opt out via include_cached_copy_url=0)

Dates without a check are omitted from results. A check with no sources or brands is returned with empty brands and sources arrays.

Limits:

  • Up to 50 prompt_llm_ids[] per request.
  • Date range up to 366 days.
  • Requested prompts multiplied by date range days must not exceed 3,660.
  • Default range: last 7 days.

Compact mode (compact=1): adjacent calendar days with identical brands and sources (and, for Google AI Overview, identical ai_overview_present and organic_urls) are collapsed into a single entry with a date_from/date_to range instead of date. Entry fields (cached_copy_url, flags) are taken from the most recent day of the run. Days separated by a gap without checks are never merged.

Google AI Overview: entries additionally contain ai_overview_present and organic_urls (top 20 organic results).

Warning: cached_copy_url points at the api4.seranking.com surface, which is not part of the unified gateway. As of July 9, 2026 the gateway API key is rejected there (403) with both Authorization: Token header and ?token= query authentication, so the cached copy cannot currently be fetched with the same credentials. Raised with the AIRT team.

Request parameters

ParameterTypeRequiredDefaultDescription
site_idIntegerYesN/ASite ID.
llm_idIntegerYesN/ALLM engine ID.
prompt_llm_ids[]Array of integersYesN/APrompt-to-LLM link IDs from List prompts (repeatable). 1–50 IDs.
date_fromStringNo7 days before date_toStart date (YYYY-MM-DD format).
date_toStringNoCurrent dateEnd date (YYYY-MM-DD format). Cannot exceed the current date.
include_cached_copy_urlBooleanNo1Include the cached copy URL in every result entry.
compactBooleanNo0Collapse consecutive days with identical brands and sources into date ranges.

Request example

Copy
curl 'https://api.seranking.com/v1/project-management/airt/competitors?site_id=11270054&llm_id=151294&prompt_llm_ids[]=1411621&prompt_llm_ids[]=1411624&date_from=2026-07-01&date_to=2026-07-08' \
-H 'Authorization: Token YOUR_API_KEY'

Response parameters

ParameterTypeDescription
site_idIntegerSite ID.
site_llm_idIntegerLLM engine ID.
date_fromStringStart date of the data range.
date_toStringEnd date of the data range.
itemsArrayOne item per requested prompt, in the order of prompt_llm_ids[].

Each item in the items array:

ParameterTypeDescription
prompt_llm_idIntegerPrompt-to-LLM link ID.
promptStringPrompt text.
resultsArrayOne entry per check date (or per collapsed date range when compact=1), ordered by date ascending.

Each entry in results:

ParameterTypeDescription
dateStringCheck date. Absent when compact=1.
date_fromStringStart of the collapsed range. Only present when compact=1.
date_toStringEnd of the collapsed range. Only present when compact=1.
brandsArray of objectsBrands mentioned in the AI answer, ordered as displayed. Each object: position (1-based), name.
sourcesArray of objectsSource URLs cited in the AI answer, ordered as displayed. Each object: position (1-based), url, domain.
has_cached_copyBooleanWhether the cached HTML copy is still available (stored for 30 days). Derived from the check date age, not from a per-day storage check; in rare cases the cached-copy endpoint can still respond with 404.
has_answer_textBooleanWhether the answer text is still available (stored for 1 year). Fetch it via Get prompt answer.
cached_copy_urlString or nullURL of the cached HTML copy endpoint. Only present when include_cached_copy_url=1 (default). null when the copy is unavailable.
ai_overview_presentBooleanWhether the AI Overview block was present. Only present for Google AI Overview engines.
organic_urlsArray of objectsOrganic search results (top 20). Only present for Google AI Overview engines. Same object shape as sources.

Response example

Copy
{
"site_id": 11270054,
"site_llm_id": 151294,
"date_from": "2026-07-01",
"date_to": "2026-07-08",
"items": [
{
"prompt_llm_id": 1411621,
"prompt": "best seo tool",
"results": [
{
"date": "2026-07-08",
"brands": [
{ "position": 1, "name": "Semrush" },
{ "position": 2, "name": "SE Ranking" }
],
"sources": [
{
"position": 1,
"url": "https://seranking.com/blog/best-seo-tools/",
"domain": "seranking.com"
}
],
"has_cached_copy": true,
"has_answer_text": true,
"cached_copy_url": "https://api4.seranking.com/sites/11270054/airt/v2/llm/151294/prompts/1411621/cached-copy?date=2026-07-08"
}
]
}
]
}

Error responses

CodeScenario
400Missing or invalid prompt_llm_ids[], invalid date format, date_from greater than date_to, or date range exceeds the limit.
403Access denied to the requested site.
404LLM engine not found for this site, or prompt not found or does not belong to this LLM engine.

Get competitors check dates

GET https://api.seranking.com/v1/project-management/airt/competitors/dates

Cost: 0. Retrieving competitors data does not consume API credits or subscription quota.

Returns the list of dates within a range on which the prompt was checked and competitors data is available. Use it to avoid requesting empty periods.

Note: Default range: last 30 days. Maximum range: 366 days.

Request parameters

ParameterTypeRequiredDefaultDescription
site_idIntegerYesN/ASite ID.
llm_idIntegerYesN/ALLM engine ID.
prompt_llm_idIntegerYesN/APrompt-to-LLM link ID from List prompts.
date_fromStringNo30 days before date_toStart date (YYYY-MM-DD format).
date_toStringNoCurrent dateEnd date (YYYY-MM-DD format). Cannot exceed the current date.

Request example

Copy
curl 'https://api.seranking.com/v1/project-management/airt/competitors/dates?site_id=11270054&llm_id=151294&prompt_llm_id=1411621&date_from=2026-06-09&date_to=2026-07-08' \
-H 'Authorization: Token YOUR_API_KEY'

Response parameters

ParameterTypeDescription
site_idIntegerSite ID.
site_llm_idIntegerLLM engine ID.
prompt_llm_idIntegerPrompt-to-LLM link ID.
date_fromStringStart date of the data range.
date_toStringEnd date of the data range.
datesArray of stringsDates with competitors data, ordered ascending.

Response example

Copy
{
"site_id": 11270054,
"site_llm_id": 151294,
"prompt_llm_id": 1411621,
"date_from": "2026-06-09",
"date_to": "2026-07-08",
"dates": ["2026-07-06", "2026-07-07", "2026-07-08"]
}

Error responses

CodeScenario
400Invalid date parameters.
403Access denied to the requested site.
404LLM engine or prompt not found.

Get source metrics

GET https://api.seranking.com/v1/project-management/airt/competitors/source-metrics

Cost: 0. Retrieving competitors data does not consume API credits or subscription quota.

Returns SEO metrics for the source URLs (or their domains) cited in the AI answer for a prompt on a given date:

  • domain_trust — Domain Trust score
  • ref_domains — number of referring domains
  • organic_keywords — number of organic keywords the URL or domain ranks for

For Google AI Overview engines the source list also includes organic results.

Request parameters

ParameterTypeRequiredDefaultDescription
site_idIntegerYesN/ASite ID.
llm_idIntegerYesN/ALLM engine ID.
prompt_llm_idIntegerYesN/APrompt-to-LLM link ID from List prompts.
dateStringYesN/ACheck date (YYYY-MM-DD format). Available dates come from Get competitors check dates.
modeStringNodomainMetrics aggregation mode: domain (aggregated per source domain) or url (per exact source URL).

Request example

Copy
curl 'https://api.seranking.com/v1/project-management/airt/competitors/source-metrics?site_id=11270054&llm_id=151216&prompt_llm_id=1411240&date=2026-07-08&mode=domain' \
-H 'Authorization: Token YOUR_API_KEY'

Response parameters

ParameterTypeDescription
site_idIntegerSite ID.
site_llm_idIntegerLLM engine ID.
prompt_llm_idIntegerPrompt-to-LLM link ID.
dateStringCheck date.
modeStringAggregation mode used: url or domain.
itemsArrayMetrics per source (see below).

Each item in the items array:

ParameterTypeDescription
sourceStringSource URL (mode=url) or domain (mode=domain).
domainString or nullDomain of the source.
domain_trustInteger or nullDomain Trust score.
ref_domainsString or nullNumber of referring domains, encoded as a string. Coerce to an integer before arithmetic.
organic_keywordsInteger or nullNumber of organic keywords the source ranks for.

Response example

Copy
{
"site_id": 11270054,
"site_llm_id": 151216,
"prompt_llm_id": 1411240,
"date": "2026-07-08",
"mode": "domain",
"items": [
{
"source": "[www.reddit.com](https://www.reddit.com)",
"domain": "[www.reddit.com](https://www.reddit.com)",
"domain_trust": 98,
"ref_domains": "2532163",
"organic_keywords": 199918377
},
{
"source": "[www.semrush.com](https://www.semrush.com)",
"domain": "[www.semrush.com](https://www.semrush.com)",
"domain_trust": 96,
"ref_domains": "222992",
"organic_keywords": 494418
}
]
}

Note: A 200 response with an empty items array means the answer on that date cited no sources (common for ChatGPT prompts where the answer had no source links).

Error responses

CodeScenario
400Missing or invalid date, or invalid mode.
403Access denied to the requested site.
404LLM engine or prompt not found.

Learn how SE Ranking’s API can boost your SEO!

Hi! Meet our product experts!

One of them will walk you through the API and show you how to get the most out of it.

  • Enjoy a tailored demo on integrating rich, structured SEO data into your stack.
  • Pin down every tech detail live—auth, endpoints, rate limits, data formats.
  • Compare usage tiers and pricing so you can unlock maximum data value.

Request a free demo to see our tools and integrations in action

By clicking this button, you agree to SE Ranking’s
Terms of Service and Privacy Statement.