AI Search
The AI Search API provides tools to analyze a domain’s visibility and performance within Large Language Model (LLM) results. You can retrieve high-level overviews, find specific prompts that feature a target domain or brand, and discover the brand name associated with a domain.
Overview
GET https://api.seranking.com/v1/ai-search/overview
Cost: 2000 credits per request
Get a high-level overview of a domain’s performance in LLM, including key metrics like link presence, average position, and AI traffic, along with historical dynamics (trends over time).
Request parameters
| Parameter | Type | Required | Default | Description | 
|---|---|---|---|---|
| engine | string | Yes | n/a | The LLM to query (e.g., ai-overview,chatgpt,perplexity,gemini,ai-mode). | 
| target | string | Yes | n/a | The target to analyze for LLM performance. Can be a root domain, subdomain, or a specific URL. | 
| source | string | Yes | n/a | Alpha-2 country code for the regional prompt database (e.g., usfor United States results). | 
| scope | string | Yes | base_domain | Scope of analysis: base_domain (aggregate by registrable domain, includes all subdomains), domain (exact host only, no subdomain aggregation), url (exact URL including path and query) | 
Request example
curl --location 'https://api.seranking.com/v1/ai-search/overview?target=seranking.com&scope=domain&source=us&engine=chatgpt' \
--header 'Authorization: Token YOUR_API_KEY'
Response parameters
If successful, the server returns a JSON object containing aggregated metrics, changes from the previous period, and time-series data for generating charts.
| Parameter | Type | Description | 
|---|---|---|
| summary | object | An object containing key performance metrics like link_presence,average_position, andai_opportunity_traffic. | 
| time_series | object | An object containing historical data arrays for overall_traffic,organic_traffic,ai_traffic,link_presence, andaverage_position. | 
Each object within the summary object has the following structure:
| Parameter | Type | Description | 
|---|---|---|
| current | float | The value for the current period. | 
| previous | float | The value for the previous period. | 
| change_absolute | float | The absolute difference between the current and previous periods. | 
| change_percent | float | The percentage change between the current and previous periods. | 
Each array within the time_series object contains a series of objects with the following structure:
| Parameter | Type | Description | 
|---|---|---|
| date | string | The month and year of the data point (YYYY-MM). | 
| value | float | The metric’s value for that month. | 
Response example
A successful request returns a JSON object with a comprehensive overview of LLM performance metrics.
{
    "summary": {
        "link_presence": {
            "current": 8210,
            "previous": 11124,
            "change_absolute": 2914,
            "change_percent": 26.2
        },
        "average_position": {
            "current": 9.93,
            "previous": 12.84,
            "change_absolute": 2.91,
            "change_percent": 22.66
        },
        "ai_opportunity_traffic": {
            "current": 2950,
            "previous": 5055,
            "change_absolute": 2105,
            "change_percent": 41.64
        }
    },
    "time_series": {
        "overall_traffic": [
            { "date": "2025-08", "value": 43386 },
            { "date": "2025-09", "value": 74392 }
        ],
        "organic_traffic": [
            { "date": "2025-08", "value": 38331 },
            { "date": "2025-09", "value": 71442 }
        ],
        "ai_traffic": [
            { "date": "2025-08", "value": 5055 },
            { "date": "2025-09", "value": 2950 }
        ],
        "link_presence": [
            { "date": "2025-08", "value": 11124 },
            { "date": "2025-09", "value": 8210 }
        ],
        "average_position": [
            { "date": "2025-08", "value": 12.84 },
            { "date": "2025-09", "value": 9.93 }
        ]
    }
}
Discover brand by URL
GET https://api.seranking.com/v1/ai-search/discover-brand
Cost: 100 credits per request
Identify the brand name associated with the specified target domain. This utility endpoint is useful for programmatically finding a brand before using it in other queries.
Request parameters
| Parameter | Type | Required | Default | Description | 
|---|---|---|---|---|
| target | string | Yes | n/a | The target to analyze for LLM performance. Can be a root domain, subdomain, or a specific URL. | 
| source | string | Yes | n/a | Alpha-2 country code for the regional prompt database (e.g., usfor United States results). | 
| scope | string | Yes | base_domain | Scope of analysis: base_domain (aggregate by registrable domain, includes all subdomains), domain (exact host only, no subdomain aggregation), url (exact URL including path and query) | 
Request example
curl --location 'https://api.seranking.com/v1/ai-search/discover-brand?target=microsoft.com&scope=domain&source=us' \
--header 'Authorization: Token YOUR_API_KEY'
Response parameters
If successful, the server returns a JSON object containing an array of discovered brand names.
| Parameter | Type | Description | 
|---|---|---|
| brands | array | An array of strings, each a potential brand name. | 
Response example
A successful request returns a JSON object with an array of brand names associated with the target.
{
    "brands": [
        "Microsoft"
    ]
}
Get prompts by target
GET https://api.seranking.com/v1/ai-search/prompts-by-target
Cost: 200 credits per returned prompt
Retrieve a paginated list of prompts where the specified domain, subdomain, or URL appears in LLM results.
Request parameters
| Parameter | Type | Required | Default | Description | 
|---|---|---|---|---|
| engine | string | Yes | n/a | The LLM to query (e.g., ai-overview,chatgpt,perplexity,gemini,ai-mode). | 
| target | string | Yes | n/a | The target to analyze for LLM performance. Can be a root domain, subdomain, or a specific URL. | 
| source | string | Yes | n/a | Alpha-2 country code for the regional prompt database (e.g., usfor United States results). | 
| scope | string | Yes | base_domain | Scope of analysis: base_domain (aggregate by registrable domain, includes all subdomains), domain (exact host only, no subdomain aggregation), url (exact URL including path and query) | 
| sort | string | No | volume | The field to sort the results by. Options: volume, type, snippet_length. | 
| sort_order | string | No | desc | The order of sorting (asc or desc). | 
| limit | integer | No | 100 | The maximum number of prompts to return per page (max 1000). | 
| offset | integer | No | 0 | The starting position for the paginated list. | 
| filter | object | No | n/a | An object for filtering results. See the Filtering Results section for details. | 
Request example
curl --location --globoff 'https://api.seranking.com/v1/ai-search/prompts-by-target?target=seranking.com&scope=domain&source=us&engine=ai-mode&limit=1' \
--header 'Authorization: Token YOUR_API_KEY'
Response parameters
If successful, the server returns a JSON object containing the unique ID for the newly created audit.
| Parameter | Type | Description | 
|---|---|---|
| total | integer | The total number of prompts found for the target. | 
| date | string | The date of the data snapshot (YYYY-MM-DD). | 
| prompts | array | An array of objects, each representing a found prompt. | 
prompts array object structure
Each object in the prompts array has the following structure:
| Parameter | Type | Description | 
|---|---|---|
| prompt | string | The user query or prompt text that triggered the LLM response. | 
| volume | integer | The estimated monthly search volume for the prompt. | 
| type | string | The type of appearance for the target in the LLM result (e.g., “Link”, “Brand”). | 
| answer | object | An object containing the detailed response from the LLM. | 
answer object structure
The answer object contains the following fields:
| Parameter | Type | Description | 
|---|---|---|
| text | string | The full text of the snippet generated by the LLM. | 
| links | array | An array of URL strings that were included as links within the LLM’s answer. | 
Response example
{
    "total": 5448,
    "date": "2025-09-01",
    "prompts": [
        {
            "prompt": "peliculas en netflix",
            "volume": 14800,
            "type": "Link",
            "answer": {
                "text": "Hay una gran variedad de peliculas disponibles en Netflix...",
                "links": [ "[https://movies.sitioficial.netflix.com/browse/genre/34399](https://movies.sitioficial.netflix.com/browse/genre/34399)" ]
            }
        }
    ]
}
Get prompts by brand
GET https://api.seranking.com/v1/ai-search/prompts-by-brand
Cost: 200 credits per returned prompt
Retrieve a paginated list of prompts where the specified brand name is mentioned in LLM results.
Request parameters
| Parameter | Type | Required | Default | Description | 
|---|---|---|---|---|
| engine | string | Yes | n/a | The LLM to query (e.g., ai-overview,chatgpt,perplexity,gemini,ai-mode). | 
| brand | string | Yes | n/a | The brand name to search for in LLM snippets. | 
| source | string | Yes | n/a | Alpha-2 country code for the regional prompt database (e.g., usfor United States results). | 
| sort | string | No | volume | The field to sort the results by. Options: volume, type, snippet_length. | 
| sort_order | string | No | desc | The order of sorting (asc or desc). | 
| limit | integer | No | 100 | The maximum number of prompts to return per page (max 1000). | 
| offset | integer | No | 0 | The starting position for the paginated list. | 
| filter | object | No | n/a | An object for filtering results. See the Filtering Results section for details. | 
Request example
curl --location 'https://api.seranking.com/v1/ai-search/prompts-by-brand?brand=Netflix&source=us&engine=perplexity&sort=volume&sort_order=desc&offset=0&limit=10' \
--header 'Authorization: Token YOUR_API_KEY'
Response parameters
| Parameter | Type | Description | 
|---|---|---|
| total | integer | The total number of times the brand has been mentioned in the specified LLM for the current month. | 
| date | string | The date of the data snapshot (YYYY-MM-DD). | 
| prompts | array | An array of objects, each representing a found prompt. See the structure below for details. | 
prompts array object structure
Each object in the prompts array has the following structure:
| Parameter | Type | Description | 
|---|---|---|
| prompt | string | The user query or prompt text that triggered the LLM response. | 
| volume | integer | The estimated monthly search volume for the prompt. | 
| type | string | The type of appearance for the target in the LLM result (e.g., “Link”, “Brand”). | 
| answer | object | An object containing the detailed response from the LLM. | 
answer object structure
The answer object contains the following fields:
| Parameter | Type | Description | 
|---|---|---|
| text | string | The full text of the snippet generated by the LLM. | 
| links | array | An array of URL strings that were included as links within the LLM’s answer. | 
Response example
A successful request returns a JSON object containing a list of prompts that mention the specified brand.
{
    "total": 5448,
    "date": "2025-09-01",
    "prompts": [
        {
            "prompt": "peliculas en netflix",
            "volume": 14800,
            "type": "Link",
            "answer": {
                "text": "Hay una gran variedad de peliculas disponibles en Netflix...",
                "links": [ "[https://movies.sitioficial.netflix.com/browse/genre/34399](https://movies.sitioficial.netflix.com/browse/genre/34399)" ]
            }
        }
    ]
}
Filtering results
The Get Prompts by Target and Get Prompts by Brand endpoints support advanced filtering to refine your search results. The filter parameter is passed as an object in the query string.
Range filters (volume, keyword_count, characters_count)
These filters allow you to specify a numeric range for your results. Both from and to values are inclusive. You can use one or both to define the range.
- To get values greater than or equal to a number: Use filter[<parameter>][from]=<value>.- Example: filter[volume][from]=100returns prompts with a search volume of 100 or more.
 
- Example: 
- To get values less than or equal to a number: Use filter[<parameter>][to]=<value>.- Example: filter[keyword_count][to]=5returns prompts with 5 or fewer words.
 
- Example: 
- To get values within a specific range: Use both fromandto.- Example: filter[characters_count][from]=10&filter[characters_count][to]=50returns prompts that are between 10 and 50 characters long.
 
- Example: 
Text search filters (multi_keyword_included, multi_keyword_excluded)
These filters allow you to include or exclude specific keywords from the prompt text.
- multi_keyword_included: A URL-encoded JSON string specifying keywords that must be present in the prompt.
- multi_keyword_excluded: A URL-encoded JSON string specifying keywords that must not be present in the prompt.
For details on how to structure the JSON for these filters, please refer to the Text search JSON structure documentation.

