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.
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"}'
{
"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.
Keyword Research
/api/v1/keywords/global
Volume, CPC, competition and a 12-month trend for up to 100 keywords in one call.
Keyword Difficulty
/api/v1/keywords/difficulty
Country-specific ranking difficulty.
Keyword Intent
/api/v1/keywords/intent
Search-intent classification for up to 100 keywords.
Keyword Demographics
/api/v1/keywords/demographics
Age and gender demand distribution.
Keyword Clustering
/api/v1/keywords/clustering
Group a keyword's universe into topic clusters by SERP overlap.
Keyword Suggestions
/api/v1/keywords/suggestions
Up to 100 related keyword ideas — each with full metrics — from one seed keyword.
Keyword Metrics by Country
/api/v1/keywords/country
Localized metrics for up to 500 keywords in one country.
SERP
/api/v1/serp/country
Google organic results, People Also Ask and related searches for a keyword and country.
SERP Scraper
/api/v1/serp/scraper
Run a Google search and get the top results scraped to clean markdown in one call.
Scraper
/api/v1/scraper
Scrape a supported URL to clean, LLM-ready markdown in one call.
Website Traffic
/api/v1/website/traffic
Monthly organic traffic history for any domain.
Website Ranking
/api/v1/website/ranking
A domain's full ranking footprint: countries, distribution, movers, top keywords and pages.
Website Category
/api/v1/website/category
Taxonomy classification for a domain.
Website Competitors
/api/v1/website/competitors
Ordered organic competitors.
Similar Websites
/api/v1/website/similar
Traffic-ranked sites in the same category.
URL Stats
/api/v1/url/stats
Page- and domain-level authority metrics for a specific URL.
URL Keywords
/api/v1/url/keywords
Top organic keywords for one URL.
Website Stats
/api/v1/website/stats
Domain-level authority metrics for a bare domain.
Backlink History
/api/v1/backlink/history
Historical backlink counts for a domain.
Backlink Table
/api/v1/backlink/table
Detailed backlinks for a domain or URL.
SEO Page Checker
/api/v1/audit/page-checker
On-page SEO report and response timing.
Pick the endpoint for your question
Every endpoint is a POST with a JSON body and a published price.
21 endpoints
/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.
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
/api/v1/keywords/difficulty
Estimate organic ranking difficulty for one keyword and country.
Request & response
Request body
{"country": "us", "keyword": "seo tools"}
Returns
difficulty
/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.
Request & response
Request body
{"keywords": ["buy seo software", "what is seo"]}
Returns
keywords[].text, keywords[].intent
/api/v1/keywords/demographics
Return demographic distributions for one keyword.
Request & response
Request body
{"keyword": "seo tools"}
Returns
data
/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.
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[]
/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.
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
/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.
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
/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.
Request & response
Request body
{"country": "us", "keyword": "seo tools"}
Returns
keyword, country, organic[], organic[].position, people_also_ask[], related_searches[]
/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.
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
/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.
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
/api/v1/website/traffic
Get a clean monthly organic-traffic series for a domain — perfect for trend charts, competitor tracking and growth/decline detection.
Request & response
Request body
{"domain_name": "moz.com"}
Returns
domain_name, organic_monthly[]
/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.
Request & response
Request body
{"domain_name": "moz.com"}
Returns
total_volume, total_value, top_country, country_distribution, keyword_distribution, movers, top_keywords[], top_pages[]
/api/v1/website/category
Classify a domain into the Seonio category taxonomy.
Request & response
Request body
{"domain_name": "example.com"}
Returns
id, category
/api/v1/website/competitors
Find domains competing for the same organic keywords.
Request & response
Request body
{"domain_name": "example.com"}
Returns
competitors
/api/v1/website/similar
Classify a domain and return similar sites from that category.
Request & response
Request body
{"domain_name": "example.com", "limit": 7}
Returns
sites
/api/v1/url/stats
Authority metrics for a single URL: page authority, domain authority, spam score and the backlink footprint behind the page.
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
/api/v1/url/keywords
Return ranked keywords, volume and position for a full page URL.
Request & response
Request body
{"limit": 25, "url": "https://example.com/page"}
Returns
keywords
/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.
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
/api/v1/backlink/history
Return the stored DataForSEO backlink history series.
Request & response
Request body
{"target": "example.com"}
Returns
history
/api/v1/backlink/table
Return up to 100 detailed backlink rows for a target.
Request & response
Request body
{"limit": 100, "target": "example.com"}
Returns
backlinks
/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.
Request & response
Request body
{"url": "https://example.com"}
Returns
report, timing
A simple shape for production
Predictable requests, the same status codes everywhere and one account limit.
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.
- All website tools
- REST API and MCP
- 10 API requests per second
- Extra Usage while active
+25% more usage
- All website tools
- REST API and MCP
- 15 API requests per second
- Extra Usage while active
+50% more usage
- All website tools
- REST API and MCP
- 20 API requests per second
- Extra Usage while active
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.
Each action has a published dollar price or formula, and website, REST API, and MCP actions share one balance. Dataset requests from the first signed-in website visit use their published prices. Datasets you already paid for there cost $0 when you return to the same page, including filters, within seven days. REST API and MCP keep their published prices.
Every verified account gets a one-time free $1, valid for 30 days. Starter includes $15, Pro $37.50 and Business $90 at each subscription-month boundary.
The free $1 is valid for 30 days after your account is verified. New Extra Usage is valid for one year. The free $1 is spent first, then included usage and Extra Usage expiring soonest. Buying and spending Extra Usage requires an active subscription.
Data actions pause until the next included refresh, or until you activate a subscription and add Extra Usage.
Yes. Once your account is verified, you get a one-time free $1 to test any tool, valid for 30 days. No card and no subscription needed.
Starter is $15 monthly or $120 yearly, Pro is $30 monthly or $240 yearly, and Business is $60 monthly or $480 yearly.
Cancel anytime from Billing. You keep access until the end of the paid period. Remaining Extra Usage stays on your account but requires an active subscription to spend.
Refunds and statutory withdrawal rights follow our Terms and applicable law. Contact [email protected] with a billing question.
We currently cover 50 markets and add new countries regularly.
Email support for account, billing and product questions is available at [email protected].
Turn search insights into measurable growth
Start your SEO research in seconds.