---
type: "firecrawl-provider"
description: "Domain SEO stats, ranking keywords, competitors, keyword research, and backlinks from Serpstat."
use_when: "Domain SEO summaries, the keywords a domain ranks for, its organic competitors, and its top pages by traffic.\n\nKeyword volume, CPC and difficulty, search suggestions, and related queries.\n\nA domain's backlink profile summary, its active backlinks, and its referring domains."
categories: "Marketing"
capabilities: 10
pricing: "2–10 credits per billed unit; see each capability for its unit and maximum."
---
# Serpstat on Firecrawl Alexandria

Domain SEO stats, ranking keywords, competitors, keyword research, and backlinks from Serpstat.

- Categories: Marketing
- Category index: [Marketing category](https://alexandria.firecrawl.dev/agents/categories/marketing)
- Provider key: `serpstat`
- Access: Firecrawl credits
- Cost (Domain SEO summary): 10 credits per domain
- Cost (Domain organic keywords): 2 credits per row
- Cost (Organic competitors): 2 credits per competitor
- Cost (Top pages by traffic): 2 credits per page
- Cost (Keyword metrics): 10 credits per keyword
- Cost (Keyword suggestions): 10 credits per row
- Cost (Related keywords): 10 credits per row
- Cost (Backlink profile summary): 2 credits per request
- Cost (Active backlinks): 2 credits per backlink
- Cost (Referring domains): 10 credits per domain

## More

- [Human guide](https://www.firecrawl.dev/app/alexandria/serpstat)
- [OpenAPI spec](https://alexandria.firecrawl.dev/agents/providers/serpstat/openapi.json)

## Capabilities

- [Domain SEO summary](https://alexandria.firecrawl.dev/agents/providers/serpstat/domains/info): result.data holds one summary per domain. result.summary_info has page and total.
- [Domain organic keywords](https://alexandria.firecrawl.dev/agents/providers/serpstat/domains/keywords): result.data holds one row per ranking keyword. result.summary_info has page and total.
- [Organic competitors](https://alexandria.firecrawl.dev/agents/providers/serpstat/domains/competitors): result.data holds one row per competing domain, the analysed domain included. result.summary_info has page and total.
- [Top pages by traffic](https://alexandria.firecrawl.dev/agents/providers/serpstat/domains/top-pages): result.data holds one row per page. result.summary_info has page and total.
- [Keyword metrics](https://alexandria.firecrawl.dev/agents/providers/serpstat/keywords/info): result.data holds one row per keyword Serpstat has data for. result.not_found lists the rest when includeMissingKeys is true. result.summary_info has page and total.
- [Keyword suggestions](https://alexandria.firecrawl.dev/agents/providers/serpstat/keywords/suggestions): result.data holds one row per suggestion. result.summary_info has page and total.
- [Related keywords](https://alexandria.firecrawl.dev/agents/providers/serpstat/keywords/related): result.data holds one row per related keyword. result.summary_info has page and total.
- [Backlink profile summary](https://alexandria.firecrawl.dev/agents/providers/serpstat/backlinks/summary): result.data is one summary. Each count has a matching *_change delta.
- [Active backlinks](https://alexandria.firecrawl.dev/agents/providers/serpstat/backlinks/list): result.data holds one row per backlink. result.summary_info has page and total.
- [Referring domains](https://alexandria.firecrawl.dev/agents/providers/serpstat/backlinks/referring-domains): result.data holds one row per referring domain. result.summary_info has page and total.

## 1. Choose this provider when

Domain SEO summaries, the keywords a domain ranks for, its organic competitors, and its top pages by traffic.

Keyword volume, CPC and difficulty, search suggestions, and related queries.

A domain's backlink profile summary, its active backlinks, and its referring domains.

## 2. Minimal request

Call `POST https://api.firecrawl.dev/v2/scrape` with `{ alexandria: { provider, capability, options } }`. For a batch, send `{ alexandria: [...] }` with up to 10 calls.

```json
{
  "provider": "serpstat",
  "capability": "domains/info",
  "options": {
    "domains": [],
    "se": "<se>"
  }
}
```

## 3. Add provider options

Use only the options needed for the task:

- `domains` (string[], required): Domains to summarise, 1 to 30, such as ["nike.com", "adidas.com"]. Example: `[]`
- `se` (string, required): Serpstat search engine database: g_ plus a two-letter country (g_us, g_uk, g_de, g_fr, ...) or bing_us. Example: `<se>`
- `filters` (object): Serpstat filters for this method, combined with AND. Keys include traff, traff_from, traff_to, visible_from, and visible_to. Example: `{}`

## 4. Request through your preferred interface

### JavaScript

```javascript
const result = await firecrawl.scrape({
  alexandria: {
    provider: "serpstat",
    capability: "domains/info",
    options: {
      domains: [],
      se: "<se>",
    },
  },
});
```

### Python

```python
result = firecrawl.scrape_alexandria({
  "provider": "serpstat",
  "capability": "domains/info",
  "options": {
    "domains": [],
    "se": "<se>"
  }
})
```

### cURL

```sh
curl https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "alexandria": {
    "provider": "serpstat",
    "capability": "domains/info",
    "options": {
      "domains": [],
      "se": "<se>"
    }
  }
}'
```

### CLI

```sh
firecrawl scrape 'serpstat/domains/info' \
  --options '{"domains":[],"se":"<se>"}'
```


### MCP

Call the FCX MCP retrieve tool with this object:

```json
{
  "provider": "serpstat",
  "capability": "domains/info",
  "options": {
    "domains": [],
    "se": "<se>"
  }
}
```

Ask for only the returned fields needed by the task.

## 5. Full request shape

```json
{
  "provider": "serpstat",
  "capability": "domains/info",
  "options": {
    "domains": [],
    "se": "<se>"
  }
}
```

## 6. Response data

The response includes `success`, `provider`, `capability`, `creditsCost` and `data`. This example shows the provider payload in `data`:

```json
{
  "result.data": [
    {
      "domain": "<domain>",
      "keywords": 0,
      "traff": 0,
      "new_keywords": 0,
      "out_keywords": 0,
      "rised_keywords": 0,
      "down_keywords": 0,
      "ad_keywords": 0,
      "ads": 0,
      "traffic_ai": 0,
      "aio_keywords": 0,
      "aio_citations": 0,
      "prev_date": "<prev_date>"
    }
  ]
}
```

## API reference-derived contract

The following capability contract is generated from the same normalized Alexandria API reference exposed in the API spec.

### Domain SEO summary

- Capability: `domains/info`
- Description: result.data holds one summary per domain. result.summary_info has page and total.
- Instructions: Compare organic keywords, traffic, keyword movement, ads, and AI Overview counts for 1 to 30 domains in one search database. 5 Serpstat API credits per domain: up to 3 domains is 10 Firecrawl credits, 30 is 97. Use domains/keywords for the keywords behind the numbers.
- Cost: 10 credits per domain
- Capability file: [Domain SEO summary](https://alexandria.firecrawl.dev/agents/providers/serpstat/domains/info)

Accepted options:
- `domains` (string[], required): Domains to summarise, 1 to 30, such as ["nike.com", "adidas.com"]. Example: `[]`
- `se` (string, required): Serpstat search engine database: g_ plus a two-letter country (g_us, g_uk, g_de, g_fr, ...) or bing_us. Example: `<se>`
- `filters` (object): Serpstat filters for this method, combined with AND. Keys include traff, traff_from, traff_to, visible_from, and visible_to. Example: `{}`

Response schema example:
```json
{
  "result.data": [
    {
      "domain": "<domain>",
      "keywords": 0,
      "traff": 0,
      "new_keywords": 0,
      "out_keywords": 0,
      "rised_keywords": 0,
      "down_keywords": 0,
      "ad_keywords": 0,
      "ads": 0,
      "traffic_ai": 0,
      "aio_keywords": 0,
      "aio_citations": 0,
      "prev_date": "<prev_date>"
    }
  ]
}
```

### Domain organic keywords

- Capability: `domains/keywords`
- Description: result.data holds one row per ranking keyword. result.summary_info has page and total.
- Instructions: List the keywords a domain ranks for in Google's top 100, with position, URL, volume, CPC, difficulty, and SERP features. 1 Serpstat API credit per row, about 0.65 Firecrawl credits, with a 10-credit minimum (15 rows, the default, is 10; 150, the cap, is 97). Use domains/top-pages for the pages instead.
- Cost: 2 credits per row
- Capability file: [Domain organic keywords](https://alexandria.firecrawl.dev/agents/providers/serpstat/domains/keywords)

Accepted options:
- `domain` (string, required): Domain to analyse, such as nike.com, without a scheme or path. Example: `<domain>`
- `se` (string, required): Serpstat search engine database: g_ plus a two-letter country (g_us, g_uk, g_de, g_fr, ...) or bing_us. Example: `<se>`
- `withSubdomains` (boolean): Include subdomains. Serpstat's default is true. Example: `false`
- `withIntents` (boolean): Add keyword intents. Serpstat supports it on g_us and g_ua only. Example: `false`
- `url` (string): Only keywords that rank with this URL. Example: `<url>`
- `keywords` (string[]): Only keywords that contain these words. Example: `[]`
- `minusKeywords` (string[]): Drop keywords that contain these words. Example: `[]`
- `filters` (object): Serpstat filters for this method, combined with AND. Keys include position_from, position_to, region_queries_count_from, cost_from, difficulty_to, keyword_contain, intents_contain, and types_contain. Example: `{}`
- `sort` (object): One sort field and direction, for example {"region_queries_count": "desc"}. Serpstat's default is position ascending. Example: `{}`
- `page` (number): 1-based page. Serpstat returns at most the first 60,000 rows of a report. Example: `10`
- `size` (number): Rows per page, from 1 to 150. Serpstat allows up to 1000; this connector stops at 150 so a call stays within 100 Firecrawl credits. Omitting it requests 15. Example: `15`

Response schema example:
```json
{
  "result.data": [
    {
      "keyword": "<keyword>",
      "url": "<url>",
      "position": 0,
      "region_queries_count": 0,
      "cost": 0,
      "concurrency": 0,
      "difficulty": 0,
      "traff": 0,
      "types": [],
      "intents": []
    }
  ]
}
```

### Organic competitors

- Capability: `domains/competitors`
- Description: result.data holds one row per competing domain, the analysed domain included. result.summary_info has page and total.
- Instructions: Find the domains that compete with a domain in Google's top 20, with common and missing keywords, visibility, and relevance. 1 Serpstat API credit per row, about 0.65 Firecrawl credits, with a 10-credit minimum (15 rows, the default, is 10; 150, the cap, is 97). size starts at 10, Serpstat's minimum.
- Cost: 2 credits per competitor
- Capability file: [Organic competitors](https://alexandria.firecrawl.dev/agents/providers/serpstat/domains/competitors)

Accepted options:
- `domain` (string, required): Domain to analyse, such as nike.com, without a scheme or path. Example: `<domain>`
- `se` (string, required): Serpstat search engine database: g_ plus a two-letter country (g_us, g_uk, g_de, g_fr, ...) or bing_us. Example: `<se>`
- `sort` (object): One sort field and direction, for example {"relevance": "desc"} (relevance, common, missing, visibility, or all). Example: `{}`
- `page` (number): 1-based page. Serpstat returns at most the first 60,000 rows of a report. Example: `10`
- `size` (number): Rows per page, from 10 to 150. Serpstat allows up to 500; this connector stops at 150 so a call stays within 100 Firecrawl credits. Omitting it requests 15. Example: `15`

Response schema example:
```json
{
  "result.data": [
    {
      "domain": "<domain>",
      "all": {},
      "common": {},
      "visibility": {},
      "missing": 0,
      "relevance": 0,
      "traff": 0
    }
  ]
}
```

### Top pages by traffic

- Capability: `domains/top-pages`
- Description: result.data holds one row per page. result.summary_info has page and total.
- Instructions: List a domain's pages with the most estimated organic traffic and ranking keywords. 1 Serpstat API credit per row, about 0.65 Firecrawl credits, with a 10-credit minimum (15 rows, the default, is 10; 150, the cap, is 97). Use domains/keywords for the keywords behind one page.
- Cost: 2 credits per page
- Capability file: [Top pages by traffic](https://alexandria.firecrawl.dev/agents/providers/serpstat/domains/top-pages)

Accepted options:
- `domain` (string, required): Domain to analyse, such as nike.com, without a scheme or path. Example: `<domain>`
- `se` (string, required): Serpstat search engine database: g_ plus a two-letter country (g_us, g_uk, g_de, g_fr, ...) or bing_us. Example: `<se>`
- `filters` (object): Serpstat filters for this method, combined with AND. Keys include traffic_from, keywords_from, url_prefix, url_contain, and url_not_contain. Example: `{}`
- `sort` (object): One sort field and direction, for example {"traffic": "desc"} (traffic or keywords). Example: `{}`
- `page` (number): 1-based page. Serpstat returns at most the first 60,000 rows of a report. Example: `10`
- `size` (number): Rows per page, from 1 to 150. Serpstat allows up to 1000; this connector stops at 150 so a call stays within 100 Firecrawl credits. Omitting it requests 15. Example: `15`

Response schema example:
```json
{
  "result.data": [
    {
      "url": "<url>",
      "keywords": 0,
      "traffic": 0
    }
  ]
}
```

### Keyword metrics

- Capability: `keywords/info`
- Description: result.data holds one row per keyword Serpstat has data for. result.not_found lists the rest when includeMissingKeys is true. result.summary_info has page and total.
- Instructions: Get search volume, CPC, competition, difficulty, SERP features, and intent for up to 150 keywords in one database. 1 Serpstat API credit per keyword returned, with a 10-credit minimum (150 keywords is 97).
- Cost: 10 credits per keyword
- Capability file: [Keyword metrics](https://alexandria.firecrawl.dev/agents/providers/serpstat/keywords/info)

Accepted options:
- `keywords` (string[], required): Keywords to look up, 1 to 150. Example: `[]`
- `se` (string, required): Serpstat search engine database: g_ plus a two-letter country (g_us, g_uk, g_de, g_fr, ...) or bing_us. Example: `<se>`
- `withIntents` (boolean): Add keyword intents. Serpstat supports it on g_us and g_ua only. Example: `false`
- `includeMissingKeys` (boolean): List keywords Serpstat has no data for under result.not_found. Example: `false`
- `filters` (object): Serpstat filters for this method, combined with AND. Keys include region_queries_count_from, cost_from, concurrency_to, found_results_from, and intents_contain. Example: `{}`
- `sort` (object): One sort field and direction, for example {"region_queries_count": "desc"}. Example: `{}`

Response schema example:
```json
{
  "result.data": [
    {
      "keyword": "<keyword>",
      "region_queries_count": 0,
      "cost": 0,
      "concurrency": 0,
      "found_results": 0,
      "difficulty": 0,
      "keywords_count": 0,
      "types": [],
      "social_domains": [],
      "intents": []
    }
  ]
}
```

### Keyword suggestions

- Capability: `keywords/suggestions`
- Description: result.data holds one row per suggestion. result.summary_info has page and total.
- Instructions: List full-text search suggestions that contain a keyword, with any place names found in them. 1 Serpstat API credit per row, about 0.65 Firecrawl credits, with a 10-credit minimum (15 rows, the default, is 10; 150, the cap, is 97). Use keywords/related for semantically related queries with metrics.
- Cost: 10 credits per row
- Capability file: [Keyword suggestions](https://alexandria.firecrawl.dev/agents/providers/serpstat/keywords/suggestions)

Accepted options:
- `keyword` (string, required): Keyword to analyse. Example: `<keyword>`
- `se` (string, required): Serpstat search engine database: g_ plus a two-letter country (g_us, g_uk, g_de, g_fr, ...) or bing_us. Example: `<se>`
- `filters` (object): Serpstat filters. minus_keywords drops suggestions that contain those words. Example: `{}`
- `page` (number): 1-based page. Serpstat returns at most the first 60,000 rows of a report. Example: `10`
- `size` (number): Rows per page, from 1 to 150. Serpstat allows up to 1000; this connector stops at 150 so a call stays within 100 Firecrawl credits. Omitting it requests 15. Example: `15`

Response schema example:
```json
{
  "result.data": [
    {
      "keyword": "<keyword>",
      "geo_names": []
    }
  ]
}
```

### Related keywords

- Capability: `keywords/related`
- Description: result.data holds one row per related keyword. result.summary_info has page and total.
- Instructions: List queries semantically related to a keyword, with volume, CPC, difficulty, SERP features, and relatedness weight. 1 Serpstat API credit per row, about 0.65 Firecrawl credits, with a 10-credit minimum (15 rows, the default, is 10; 150, the cap, is 97).
- Cost: 10 credits per row
- Capability file: [Related keywords](https://alexandria.firecrawl.dev/agents/providers/serpstat/keywords/related)

Accepted options:
- `keyword` (string, required): Keyword to analyse. Example: `<keyword>`
- `se` (string, required): Serpstat search engine database: g_ plus a two-letter country (g_us, g_uk, g_de, g_fr, ...) or bing_us. Example: `<se>`
- `withIntents` (boolean): Add keyword intents. Serpstat supports it on g_us and g_ua only. Example: `false`
- `filters` (object): Serpstat filters for this method, combined with AND. Keys include region_queries_count_from, cost_from, difficulty_to, keyword_length_to, weight, and intents_contain. Example: `{}`
- `sort` (object): One sort field and direction, for example {"region_queries_count": "desc"}. Example: `{}`
- `page` (number): 1-based page. Serpstat returns at most the first 60,000 rows of a report. Example: `10`
- `size` (number): Rows per page, from 1 to 150. Serpstat allows up to 1000; this connector stops at 150 so a call stays within 100 Firecrawl credits. Omitting it requests 15. Example: `15`

Response schema example:
```json
{
  "result.data": [
    {
      "keyword": "<keyword>",
      "region_queries_count": 0,
      "cost": 0,
      "concurrency": 0,
      "difficulty": 0,
      "weight": 0,
      "types": [],
      "intents": []
    }
  ]
}
```

### Backlink profile summary

- Capability: `backlinks/summary`
- Description: result.data is one summary. Each count has a matching *_change delta.
- Instructions: Summarise a domain's backlink profile: Serpstat domain rank, referring domains, IPs and subnets, backlinks by type, and recent changes. 5 Serpstat API credits per call, 10 Firecrawl credits.
- Cost: 2 credits per request
- Capability file: [Backlink profile summary](https://alexandria.firecrawl.dev/agents/providers/serpstat/backlinks/summary)

Accepted options:
- `query` (string, required): Domain to analyse, such as serpstat.com. Example: `<query>`
- `searchType` (string): domain or domain_with_subdomains (Serpstat's default). URL modes are not supported here. Example: `domain_with_subdomains`

Response schema example:
```json
{
  "result.data": {
    "sersptat_domain_rank": 0,
    "referring_domains": 0,
    "referring_ip_addresses": 0,
    "referring_subnets": 0,
    "backlinks": 0,
    "dofollow_backlinks": 0,
    "nofollow_backlinks": 0
  }
}
```

### Active backlinks

- Capability: `backlinks/list`
- Description: result.data holds one row per backlink. result.summary_info has page and total.
- Instructions: List the active backlinks to a domain or URL: referring page, target, anchor, follow attribute, link type, first seen, and referring domain rank. 1 Serpstat API credit per row, about 0.65 Firecrawl credits, with a 10-credit minimum (15 rows, the default, is 10; 150, the cap, is 97).
- Cost: 2 credits per backlink
- Capability file: [Active backlinks](https://alexandria.firecrawl.dev/agents/providers/serpstat/backlinks/list)

Accepted options:
- `query` (string, required): Domain (or URL with searchType url or part_url) to analyse. Example: `<query>`
- `searchType` (string): domain, domain_with_subdomains (sent when omitted), url, or part_url (URLs that start with query). Example: `domain_with_subdomains`
- `sort` (string): Sort field. Serpstat's default is check, the date the link was found. Example: `url_from`
- `order` (string): Sort direction. Example: `asc`
- `linkPerDomain` (number): Most links to keep from each referring domain. Example: `10`
- `complexFilter` (object[]): One group of conditions combined with AND, such as {field, compareType, value} or {additional_filters}. Sent to Serpstat as complexFilter: [group]. Example: `[]`
- `page` (number): 1-based page. Serpstat returns at most the first 60,000 rows of a report. Example: `10`
- `size` (number): Rows per page, from 1 to 150. Serpstat allows up to 1000; this connector stops at 150 so a call stays within 100 Firecrawl credits. Omitting it requests 15. Example: `15`

Response schema example:
```json
{
  "result.data": [
    {
      "url_from": "<url_from>",
      "url_to": "<url_to>",
      "nofollow": "<nofollow>",
      "link_type": "<link_type>",
      "links_ext": 0,
      "link_text": "<link_text>",
      "first_seen": "<first_seen>",
      "last_visited": "<last_visited>",
      "domain_rank": 0
    }
  ]
}
```

### Referring domains

- Capability: `backlinks/referring-domains`
- Description: result.data holds one row per referring domain. result.summary_info has page and total.
- Instructions: List the domains that link to a domain or URL, with linking pages and Serpstat domain rank. 1 Serpstat API credit per row, about 0.65 Firecrawl credits, with a 10-credit minimum (15 rows, the default, is 10; 150, the cap, is 97).
- Cost: 10 credits per domain
- Capability file: [Referring domains](https://alexandria.firecrawl.dev/agents/providers/serpstat/backlinks/referring-domains)

Accepted options:
- `query` (string, required): Domain (or URL with searchType url or part_url) to analyse. Example: `<query>`
- `searchType` (string): domain, domain_with_subdomains (sent when omitted), url, or part_url (URLs that start with query). Example: `domain_with_subdomains`
- `sort` (string): Sort field. Serpstat's default is check. Example: `domain_links`
- `order` (string): Sort direction. Example: `asc`
- `complexFilter` (object[]): One group of conditions combined with AND, such as {field, compareType, value} or {additional_filters}. Sent to Serpstat as complexFilter: [group]. Example: `[]`
- `page` (number): 1-based page. Serpstat returns at most the first 60,000 rows of a report. Example: `10`
- `size` (number): Rows per page, from 1 to 150. Serpstat allows up to 1000; this connector stops at 150 so a call stays within 100 Firecrawl credits. Omitting it requests 15. Example: `15`

Response schema example:
```json
{
  "result.data": [
    {
      "domain_from": "<domain_from>",
      "ref_pages": 0,
      "domainRank": 0
    }
  ]
}
```
