Skip to content
SEO API for developers

SEO data for your own product

Query keyword metrics, organic traffic, rankings, backlinks and authority data through simple JSON endpoints with published dollar prices. No unit conversion.

Free $1 to testNo card required 4.9 in reviews
seonio / rest apiFrom the API docs
RequestPOST /api/v1/website/stats
curl -X POST https://seonio.com/api/v1/website/stats \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $SEONIO_API_KEY" \
  -d '{"target": "moz.com"}'
Response200 OK
{
  "target": "moz.com",
  "seo_metrics": {
    "page_authority": 75,
    "domain_authority": 91,
    "spam_score": 1,
    "linking_domains": 46982,
    "linking_pages": 11740244,
    "nofollow_pages": 5718502
  }
}

21 SEO tools, one API

Scan the full catalog, then open any tool's documentation and playground.

$0.001 / keyword

Keyword Research

/api/v1/keywords/global

Volume, CPC, competition and a 12-month trend for up to 100 keywords in one call.

View API docs
$0.005 / request

Keyword Difficulty

/api/v1/keywords/difficulty

Country-specific ranking difficulty.

View API docs
$0.001 / keyword

Keyword Intent

/api/v1/keywords/intent

Search-intent classification for up to 100 keywords.

View API docs
$0.01 / request

Keyword Demographics

/api/v1/keywords/demographics

Age and gender demand distribution.

View API docs
$0.25 / request

Keyword Clustering

/api/v1/keywords/clustering

Group a keyword's universe into topic clusters by SERP overlap.

View API docs
$0.02 / request

Keyword Suggestions

/api/v1/keywords/suggestions

Up to 100 related keyword ideas — each with full metrics — from one seed keyword.

View API docs
$0.01 / request + $0.001 / started 10 keywords

Keyword Metrics by Country

/api/v1/keywords/country

Localized metrics for up to 500 keywords in one country.

View API docs
$0.001 / request

SERP

/api/v1/serp/country

Google organic results, People Also Ask and related searches for a keyword and country.

View API docs
$0.001 / request + $0.002 / scraped URL

SERP Scraper

/api/v1/serp/scraper

Run a Google search and get the top results scraped to clean markdown in one call.

View API docs
$0.002 / request

Scraper

/api/v1/scraper

Scrape a supported URL to clean, LLM-ready markdown in one call.

View API docs
$0.01 / request

Website Traffic

/api/v1/website/traffic

Monthly organic traffic history for any domain.

View API docs
$0.02 / request

Website Ranking

/api/v1/website/ranking

A domain's full ranking footprint: countries, distribution, movers, top keywords and pages.

View API docs
$0.001 / request

Website Category

/api/v1/website/category

Taxonomy classification for a domain.

View API docs
$0.01 / request

Website Competitors

/api/v1/website/competitors

Ordered organic competitors.

View API docs
$0.001 / request

Similar Websites

/api/v1/website/similar

Traffic-ranked sites in the same category.

View API docs
$0.002 / request

URL Stats

/api/v1/url/stats

Page- and domain-level authority metrics for a specific URL.

View API docs
$0.02 / request

URL Keywords

/api/v1/url/keywords

Top organic keywords for one URL.

View API docs
$0.002 / request

Website Stats

/api/v1/website/stats

Domain-level authority metrics for a bare domain.

View API docs
$0.02 / request

Backlink History

/api/v1/backlink/history

Historical backlink counts for a domain.

View API docs
$0.02 / request

Backlink Table

/api/v1/backlink/table

Detailed backlinks for a domain or URL.

View API docs
$0.005 / request

SEO Page Checker

/api/v1/audit/page-checker

On-page SEO report and response timing.

View API docs
Endpoints

Pick the endpoint for your question

Every endpoint is a POST with a JSON body and a published price.

21 endpoints

POST keywords $0.001 / keyword

/api/v1/keywords/global

Send a list of keywords and get back the core metrics most SEO and PPC tools are built on: worldwide volume, CPC, competition and a dated monthly trend. Every non-blank keyword you send comes back once, in your order, in one of four lists: keywords (with data), no_data, unsupported or unavailable. You pay for each distinct keyword we look up, with data or without; unsupported and unavailable keywords are free. Keywords in scripts we can't measure worldwide come back in unsupported; the country endpoint answers them per country.

View docs & playground
Request & response

Request body

{"keywords": ["keyword research", "seo tools", "domain authority checker", "xqzv 7731", "how to fix a leaking kitchen faucet without calling a plumber"]}

Returns

keywords[].query, keywords[].text, keywords[].match, keywords[].volume, keywords[].cpc, keywords[].low_cpc, keywords[].high_cpc, keywords[].competition, keywords[].monthly_trend, keywords[].data_through, keywords[].source, no_data, unsupported, unsupported[].query, unsupported[].reason, unavailable

POST keywords $0.005 / request

/api/v1/keywords/difficulty

Estimate organic ranking difficulty for one keyword and country.

View docs & playground
Request & response

Request body

{"country": "us", "keyword": "seo tools"}

Returns

difficulty

POST keywords $0.001 / keyword

/api/v1/keywords/intent

Classify the search intent most people typing each keyword have: informational, navigational, commercial or transactional (unclear only for unintelligible text). A product or model name alone is commercial; a brand with one of its own tools, docs or pages is navigational; free online tools and local businesses ("dentist berlin") are transactional. One classification per keyword for every country. Known keywords answer at once; new ones are classified now (about 15-20 s for 100) and then stay known. Priced per distinct keyword (lowercased, inner spaces collapsed), a known one too.

View docs & playground
Request & response

Request body

{"keywords": ["buy seo software", "what is seo"]}

Returns

keywords[].text, keywords[].intent

POST keywords $0.01 / request

/api/v1/keywords/demographics

Return demographic distributions for one keyword.

View docs & playground
Request & response

Request body

{"keyword": "seo tools"}

Returns

data

POST keywords $0.25 / request

/api/v1/keywords/clustering

Give a seed keyword and get back topic clusters: we expand it into its suggestion universe, fetch the Google SERP used for each, and group keywords that share ranking pages. Ideal for content planning, silo/hub-and-spoke architecture and pillar pages.

View docs & playground
Request & response

Request body

{"country": "us", "keyword": "keyword research"}

Returns

keyword, country, clusters[], clusters[].name, clusters[].volume, clusters[].size, clusters[].keywords[], clusters[].shared_urls[], uncategorized[]

POST keywords $0.02 / request

/api/v1/keywords/suggestions

Give a seed keyword and get back up to 100 related suggestions, each with search volume, CPC range, competition, difficulty, intent and a 12-month trend. Ideal for keyword expansion, content ideation and building topic lists.

View docs & playground
Request & response

Request body

{"country": "us", "keyword": "keyword research"}

Returns

keyword, country, keywords[].text, keywords[].volume, keywords[].cpc, keywords[].low_cpc, keywords[].high_cpc, keywords[].competition, keywords[].difficulty, keywords[].intent, keywords[].monthly_trend

POST keywords $0.01 / request + $0.001 / started 10 keywords

/api/v1/keywords/country

Send a list of keywords and a country and get back each keyword's search volume, CPC range, competition, difficulty, intent and 12-month trend for that specific market. The language is derived from the country automatically.

View docs & playground
Request & response

Request body

{"country": "de", "keywords": ["seo tools", "keyword research"]}

Returns

country, keywords[].text, keywords[].volume, keywords[].cpc, keywords[].low_cpc, keywords[].high_cpc, keywords[].competition, keywords[].difficulty, keywords[].intent, keywords[].monthly_trend

POST serp $0.001 / request

/api/v1/serp/country

Send a keyword and country code and get back the Google results page: ranked organic listings with title, link and snippet, plus People Also Ask and related searches. Ideal for rank tracking, SERP analysis and competitor monitoring.

View docs & playground
Request & response

Request body

{"country": "us", "keyword": "seo tools"}

Returns

keyword, country, organic[], organic[].position, people_also_ask[], related_searches[]

POST serp $0.001 / request + $0.002 / scraped URL

/api/v1/serp/scraper

Combines a SERP lookup with a content scrape: send a keyword and country and get back the top organic results rendered as markdown, with title, meta description and content length per page. One call replaces a SERP request plus a scraper pipeline — ideal for content research, briefs and competitive analysis.

View docs & playground
Request & response

Request body

{"count": 2, "country": "us", "keyword": "seo tools"}

Returns

keyword, country, results[], scraped_count, results[].url, results[].title, results[].meta_description, results[].length, results[].markdown

POST scraper $0.002 / request

/api/v1/scraper

Send a supported URL and get available page content back as clean markdown (or raw HTML), with available title and meta description. Results are cached and served from storage while fresh, so repeat lookups are fast. Ideal for content research, briefs and feeding pages into LLM pipelines. Bot-protected sites are retried through an unblocking service and can take up to 90 seconds; the price is the same. You get whatever the site served, including its own error pages (404, 410, soft 404), charged like any page; max_age_days 0 refreshes a stored copy. A domain that does not exist (no DNS record), a page over 10 MB, a PDF over 50 MB, a link serving no page or document (an image, an archive), or a URL that is an IP address, a local host or contains credentials is a 422, not charged.

View docs & playground
Request & response

Request body

{"format": "md", "max_age_days": 7, "url": "https://moz.com/blog"}

Returns

url, title, meta_description, length, markdown, html, scraped_at

POST website $0.01 / request

/api/v1/website/traffic

Get a clean monthly organic-traffic series for a domain — perfect for trend charts, competitor tracking and growth/decline detection.

View docs & playground
Request & response

Request body

{"domain_name": "moz.com"}

Returns

domain_name, organic_monthly[]

POST website $0.02 / request

/api/v1/website/ranking

The richest endpoint: total ranking volume and value, country split, keyword position buckets, movement counts, plus the top keywords and pages driving the domain. For very large sites (about 1B+ monthly visits) only keywords with 50,000+ monthly searches are analysed: total_volume and total_value are scaled to the whole site's traffic, while keyword_distribution and movers describe those keywords only.

View docs & playground
Request & response

Request body

{"domain_name": "moz.com"}

Returns

total_volume, total_value, top_country, country_distribution, keyword_distribution, movers, top_keywords[], top_pages[]

POST website $0.001 / request

/api/v1/website/category

Classify a domain into the Seonio category taxonomy.

View docs & playground
Request & response

Request body

{"domain_name": "example.com"}

Returns

id, category

POST website $0.01 / request

/api/v1/website/competitors

Find domains competing for the same organic keywords.

View docs & playground
Request & response

Request body

{"domain_name": "example.com"}

Returns

competitors

POST website $0.001 / request

/api/v1/website/similar

Classify a domain and return similar sites from that category.

View docs & playground
Request & response

Request body

{"domain_name": "example.com", "limit": 7}

Returns

sites

POST url $0.002 / request

/api/v1/url/stats

Authority metrics for a single URL: page authority, domain authority, spam score and the backlink footprint behind the page.

View docs & playground
Request & response

Request body

{"target": "https://moz.com/blog"}

Returns

target, seo_metrics, seo_metrics.page_authority, seo_metrics.domain_authority, seo_metrics.spam_score, seo_metrics.linking_domains, seo_metrics.linking_pages, seo_metrics.nofollow_pages

POST url $0.02 / request

/api/v1/url/keywords

Return ranked keywords, volume and position for a full page URL.

View docs & playground
Request & response

Request body

{"limit": 25, "url": "https://example.com/page"}

Returns

keywords

POST website $0.002 / request

/api/v1/website/stats

Authority metrics for a whole domain: domain authority, spam score and the site-wide backlink footprint. Same response shape as URL Stats.

View docs & playground
Request & response

Request body

{"target": "moz.com"}

Returns

target, seo_metrics, seo_metrics.page_authority, seo_metrics.domain_authority, seo_metrics.spam_score, seo_metrics.linking_domains, seo_metrics.linking_pages, seo_metrics.nofollow_pages

POST audit $0.005 / request

/api/v1/audit/page-checker

Fetch a page and return structured SEO findings and timing. A page over 5 MB, a page that is not HTML, or a URL that is an IP address, a local host or contains credentials is a 422, not charged.

View docs & playground
Request & response

Request body

{"url": "https://example.com"}

Returns

report, timing

Integration basics

A simple shape for production

Predictable requests, the same status codes everywhere and one account limit.

Send JSONPOST with Content-Type: application/json and your X-API-Key header
Same status codesEvery endpoint: 401, 402, 403, 422, 429, 503
Cache repeat lookupsSEO data changes slowly; cache successful responses
5–20 requests / secondREST API and MCP limit, by plan
Pricing

Plans that scale with your usage

Create an account and test Seonio with a free $1. Subscribe when you are ready for monthly usage and Extra Usage.

Starter $15 usage each month
$15 per monthBilled $15 monthly

  • All website tools
  • REST API and MCP
  • 10 API requests per second
  • Extra Usage while active
Recommended Pro $37.50 usage each month
$30 per monthBilled $30 monthly

+25% more usage

  • All website tools
  • REST API and MCP
  • 15 API requests per second
  • Extra Usage while active
Business $90 usage each month
$60 per monthBilled $60 monthly

+50% more usage

  • All website tools
  • REST API and MCP
  • 20 API requests per second
  • Extra Usage while active
FAQ

Questions, answered

Simple answers for developers using the API.

Every endpoint has a published USD price or formula. Requests draw from the same testing, included and Extra Usage balance as website and MCP actions: testing first, then included usage, then Extra Usage expiring soonest.

API actions require a verified account with a free $1 balance or an active subscription balance. Create and manage API keys from your account, then send the key in the X-API-Key header.

Yes. Your account shows API usage and remaining balance, so you can track costs while building and running automated workflows.

REST API and MCP requests per second depend on your plan: 5 on a free account, 10 on Starter, 15 on Pro and 20 on Business. Website data requests from the same account count toward the same second. Requests above the limit return HTTP 429 with a Retry-After header and are not charged; wait a second and retry.

Free $1 to test · No card required

Turn search insights into measurable growth

Start your SEO research in seconds.

SEO researchREST APIMCP