Start Free
SEO API for developers

Build SEO data into your product.

Query keyword metrics, organic traffic, rankings, and authority data through a simple JSON API.

Simple JSON endpoints. Fixed prices in dollars. No credit math.

Get Your Free API Key

$1 free API balance. No credit card.

curl
curl -X POST https://seonio.com/api/v1/seo-stats \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $SEONIO_API_KEY" \
  -d '{"target":"moz.com"}'

Response

{
  "status": 200,
  "ok": true,
  "data": {
    "target": "moz.com",
    "seo_metrics": {
      "page_authority": 75,
      "domain_authority": 91,
      "spam_score": 1,
      "linking_domains": 46982,
      "linking_pages": 11740244,
      "nofollow_pages": 5718502
    }
  }
}
 

API endpoints

Pick the endpoint by the question your product needs to answer.

13 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. Ideal for keyword explorers, content planners and bulk research jobs.

View docs & playground
Request & response

Request body

{"keywords": ["keyword research", "seo tools", "domain authority checker"]}

Returns

keywords[].text, keywords[].volume, keywords[].cpc, keywords[].competition, keywords[].monthly_trend

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 live SERP 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[]

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.0001 / keyword

/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.001 / 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[], results[].url, results[].title, results[].meta_description, results[].length, results[].markdown

POST scraper $0.002 / request

/api/v1/scraper

Send a URL and get its page content back as clean markdown (or raw HTML), with 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.

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.

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 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 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

 

Integration basics

A simple API shape built for predictable production workflows.

01. Send JSON

Every endpoint accepts a POST request with Content-Type: Content-Type: application/json.

02. Handle status codes

Expect 401 for missing or invalid keys, 402 for insufficient balance, 422 for invalid request bodies, and 429 for rate limits.

03. Cache repeat lookups

SEO data changes over time. Cache successful responses when your app may request the same data again.

 

API Balance

Add funds once and use them anytime. Your balance never expires. New accounts start with $1 free.

Starter

$10 to spend

$ 10 one-time

 
Balance never expires.

A first top-up to kick the tires.

Most popular

Pro

$115 to spend

$ 100 one-time

+15% bonus
$100 + $15 free

The sweet spot for steady production traffic.

Scale

$1,300 to spend

$ 1,000 one-time

+30% bonus
$1,000 + $300 free

Best rate per dollar for high-volume workloads.

 

FAQ

Simple answers for developers using the API.

Pricing & Balance

Every API endpoint has a fixed price in USD. Your requests are charged directly against your API balance, so you always know what each call costs.
No. Seonio does not use abstract credits for API pricing. You add dollars to your account and spend that balance directly on API usage.
No. Your API balance never expires, so you can use it whenever your workflows need it.
Paid API requests stop until you add more balance. This keeps spend predictable and prevents unexpected charges.

API & Integration

You can create and manage API keys from your account. Use your key to authenticate requests from your app, scripts, or internal tools.
Yes. Your dashboard shows your API usage and remaining balance, so you can track costs while building and running automated workflows.
We currently cover 50 markets. We add new countries regularly.
Algeria Argentina Australia Austria Bangladesh Belgium Brazil Bulgaria Canada Czechia Denmark Egypt Finland France Germany Ghana Greece Hungary India Indonesia Ireland Italy Japan Kenya Malaysia Mexico Morocco Netherlands New Zealand Nigeria Norway Pakistan Philippines Poland Portugal Romania Saudi Arabia Serbia Singapore South Africa Spain Sri Lanka Sweden Switzerland Thailand Turkiye United Arab Emirates United Kingdom United States Vietnam
Our support team responds to email inquiries within 1 business day. We can help with account, billing, and API integration questions.
We enforce a global rate limit per API-Key of 10 requests per second across all endpoints to ensure system stability. If you exceed this, our servers will return an HTTP 429 Too Many Requests status code. To handle this seamlessly in production, we recommend building rate-limiting logic or an exponential backoff (briefly pausing before retrying) directly into your application code.
 
blurry shape
shape line circles

Start Researching for Free

$1 free balance included • No credit card required • Access all features