Scraper
Scrape a supported URL to clean, LLM-ready markdown in one call.
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.
/api/v1/scraper
$0.002 / request
Use your Seonio API key instantly.
curl -X POST https://seonio.com/api/v1/scraper \
-H "Content-Type: application/json" \
-H "X-API-Key: $SEONIO_API_KEY" \
-d '{"format": "md", "max_age_days": 7, "url": "https://moz.com/blog"}'
Sample response
{
"html": null,
"length": 18342,
"markdown": "# The Moz Blog\n\nThe latest SEO news, tips and research from the Moz team ...",
"meta_description": "Read the latest SEO news, tips and research from the Moz team.",
"scraped_at": "2026-07-05T12:00:00",
"title": "The Moz Blog | SEO Insights, Tips \u0026 Best Practices",
"url": "https://moz.com/blog"
}
Request and response
The full contract for /api/v1/scraper — what to send and what comes back.
Request body
url
string
required
A full URL, e.g. "https://moz.com/blog".
max_age_days
integer
optional
Cache freshness window in days (default 7). Cached pages younger than this are served from storage; older pages are re-scraped. Use 0 to force a fresh scrape.
format
string
optional
Output format: "md" (markdown, the default), "html" (raw HTML) or "both". Unknown values fall back to "md".
Response fields
url |
string |
The URL that was scraped. |
title |
string | null |
Page title, or null if nothing was scraped. |
meta_description |
string | null |
Meta description, or null if unavailable. |
length |
integer | null |
Character length of the page's markdown content, or null if nothing was scraped. |
markdown |
string | null |
The page content as markdown. Present for format "md" and "both"; null otherwise. |
html |
string | null |
The page as HTML. Present for format "html" and "both"; null otherwise. |
scraped_at |
string | null |
Timestamp of the stored scrape, or null if nothing was scraped. |
Code examples
Copy, paste, swap in your API key.
curl -X POST https://seonio.com/api/v1/scraper \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{"format": "md", "max_age_days": 7, "url": "https://moz.com/blog"}'
Playground
Run a real /api/v1/scraper request. No key? We show the real sample result so you can still inspect the shape.
Leave the API key empty to load the built-in sample response.
Request
POST /api/v1/scraper
What developers build with it
Common ways Scraper ends up in production.
Feeding page content into LLM and analysis pipelines as markdown.
Building content briefs from competitor pages.
Extracting article text without running your own scraper.
Status codes
The same predictable contract on every endpoint.
200 |
Success. The lookup completed and was charged, even if the response is empty. |
401 |
Missing or unknown API key. |
402 |
Not enough balance on the account. |
422 |
Invalid request body (wrong shape or types). |
429 |
Account rate limit exceeded (20 requests per second). |
Other endpoints
Explore the rest of the SEO API.
Keyword Research
/api/v1/keywords/global
Volume, CPC, competition and a 12-month trend for up to 100 keywords in one call.
Keyword Countries
/api/v1/keywords/countries
Top five countries by keyword volume.
Keyword Difficulty
/api/v1/keywords/difficulty
Country-specific ranking difficulty.
Keyword Intent
/api/v1/keywords/intent
Search-intent classification.
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 1000 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.
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.
FAQ
Simple answers for developers using the API.
Pricing & Balance
API & Integration
Start free
$1 testing balance • No card required • Subscribe when ready