API & MCP Documentation | Seotrends

API & MCP

Everything you browse in Seotrends is available over a read-only JSON API, and through an MCP server if you would rather ask an AI assistant. Both are included with the Starter, Pro and Agency plans, and both return exactly the data your plan covers.

Authentication Limits Domains Keywords Errors MCP

Create an account and pick a plan to get your key.

Authentication

Every request needs your email and your API key. You will find both in your account. Send them as HTTP Basic credentials:

curl -u "[email protected]:YOUR_API_KEY" \
  "https://seotrends.pro/v1/domains?dr_max=30&per_page=10"

Or, if a single header is easier for your client:

curl -H "X-Api-Key: YOUR_API_KEY" "https://seotrends.pro/v1/me"

The API key is not your account password. It only grants read access to the data your plan includes, and you can regenerate it at any time from /account without changing anything else about your account. Regenerating stops the old key immediately.

Limits

Two things are metered: how many requests you make and how many rows you receive. Both reset at 00:00 UTC, and every successful response tells you where you stand in a usage block, so your script can pace itself without guessing.

PlanRequests / dayRows / dayRows per pageRequests / minute
Starter 1,000 25,000 100 60
Pro 5,000 100,000 100 60
Agency 20,000 500,000 1,000 120

Listings page through the first 10,000 rows of a result set. Past that, narrow the query (country, DR range, category, minimum traffic) instead of paging deeper. It is also much faster, since a tighter filter reads far less of the database.

Domains

GET /v1/domains

The dashboard listing, with the same filters. All parameters are optional.

ParameterDescription
countriesComma-separated country codes (ES,IT). Defaults to every country in your plan. Asking for one outside it returns an error rather than silently swapping it.
categoriesComma-separated category IDs, from /v1/categories.
dr_min, dr_maxDomain Rating range.
age_min, age_maxDomain age in years.
traffic_minMinimum monthly organic traffic.
value_minMinimum monthly traffic value in USD.
keywords_min, top3_minMinimum keywords, minimum top-3 rankings.
growth_min, quality_minMinimum growth score, minimum quality score.
cpc_minMinimum average CPC. Pro and Agency only; on Starter it is ignored and reported back in meta.ignored_filters.
adultexclude (default), include or only.
only_my_countries1 hides domains that also rank outside your plan's countries.
sorttraffic_value (default), growth_score, opportunity, quality_score, keywords, volume, age, top3, avg_position, traffic, dr.
orderASC or DESC.
page, per_pagePaging. per_page is capped by your plan.
curl -u "[email protected]:YOUR_API_KEY" \
  "https://seotrends.pro/v1/domains?countries=ES&dr_max=30&traffic_min=5000&sort=growth_score&per_page=25"
{
  "data": [
    {
      "domain": "example.com",
      "dr": 16,
      "age_years": 3,
      "category": "Finance",
      "countries": ["ES"],
      "total_keywords": 119,
      "top3": 78,
      "organic_traffic": 712579,
      "traffic_value_usd": 281114.86,
      "growth_score": 103.8,
      "opportunity_score": 10.89,
      "url": "https://seotrends.pro/reports?report=domain_keywords_detail&domain=example.com"
    }
  ],
  "meta":  { "page": 1, "per_page": 25, "total": 8412, "total_pages": 337 },
  "usage": { "requests_today": 12, "requests_limit": 5000, "rows_today": 300, "rows_limit": 100000 }
}

GET /v1/domains/{domain}

One domain in full, plus traffic_history: our monthly snapshots of estimated traffic and value. The series grows one real month at a time, so a domain we started tracking recently has a shorter history.

GET /v1/domains/{domain}/keywords

Every keyword the domain ranks for, paginated. Filter with position_max, volume_min, difficulty_max and country; sort by traffic (default), volume, position, cpc or difficulty.

curl -u "[email protected]:YOUR_API_KEY" \
  "https://seotrends.pro/v1/domains/example.com/keywords?position_max=10&per_page=100"

Keywords

GET /v1/keywords

Search the keyword database. q matches whole words, so seo does not return museo; pass partial=1 if you do want substring matching. Filter with country, volume_min, difficulty_max and cpc_min (Pro and above).

Reference data

GET /v1/categories lists the category IDs used by the filters. GET /v1/countries lists every country we cover and flags which ones your plan includes. GET /v1/me returns your plan, your countries and today's usage.

Errors

Errors come back as JSON with a stable error code, so you can branch on it without parsing the message.

HTTPCodeWhat to do
401missing_credentials, invalid_keyCheck the key at /account.
402payment_requiredA renewal failed. Update the card and access resumes on its own.
403plan_required, country_not_in_planThe plan does not cover that data.
404not_foundUnknown endpoint, or we have no data for that domain.
429rate_limitedDaily or per-minute limit reached. The response says which.
400invalid_sort, invalid_domain, page_too_deepFix the parameter; the response lists what is allowed.

MCP server

MCP lets an AI assistant query Seotrends directly, so you can ask for what you need in plain language instead of writing requests. It uses the same key and the same plan limits.

Claude Code

claude mcp add --transport http seotrends https://seotrends.pro/mcp \
  --header "X-Api-Key: YOUR_API_KEY"

Claude Desktop, Cursor and other clients

Add this to the MCP configuration file:

{
  "mcpServers": {
    "seotrends": {
      "type": "http",
      "url": "https://seotrends.pro/mcp",
      "headers": { "X-Api-Key": "YOUR_API_KEY" }
    }
  }
}

Once connected, your assistant can call these tools:

ToolWhat it does
search_domainsFind domains by country, DR, age, traffic, category and more.
get_domainFull metrics and traffic history for one domain.
get_domain_keywordsThe keywords a domain ranks for.
search_keywordsSearch the keyword database by volume, difficulty and CPC.
list_categoriesCategory IDs for the filters.
my_accountYour plan, countries and remaining quota.

Assistants read a lot of rows quickly. The MCP tools return compact results by default (20 rows) to keep answers sharp; ask for more explicitly when you need it.

Something missing, or a field you need that we do not expose yet? Tell us and we will look at it.