Web Scraping API
Web Scraping APIsScrape any public web page and get it back in the format you need: raw HTML, structured JSON, Markdown, plain text or CSV. Each format is its own endpoint.
About this API
Scrape any public web page and get it back in the format you need: raw HTML, structured JSON, Markdown, plain text or CSV. Each format is its own endpoint.
Include your API key in the X-API-KEY request header. Each successful (HTTP 200) request uses 1 credit.
If Markdown or text comes back empty, the site probably builds its content with JavaScript. Retry with render_js=true.
Raw HTML
Scrape any public web page and get it back in the format you need: raw HTML, structured JSON, Markdown, plain text or CSV. Each format is its own endpoint.
Ready to query this endpoint?
Sign up to get a free API key instantly with sandbox test credits. No card required.
Request Details
| Parameter | Type | Requirement | Description |
|---|---|---|---|
| url | string | Required | Page to scrape (http/https). |
| format | string | Optional | json = wrapped in the JSON response, html = the page HTML itself. Allowed: json, html. Default: json. |
| proxy_type | string | Optional | Proxy pool to scrape through. Allowed: premium, standard. Default: premium. |
| location | string | Optional | Country to scrape from. standard has 8 countries, premium has 248. Any letter case works. See /locations. Default: United States. |
| language | string | Optional | Locale code, e.g. en-GB, de-DE, pt-BR. Any case. See /languages. Default: en-US. |
| device | string | Optional | Device to emulate. See /devices. Allowed: desktop, desktop_chrome, desktop_firefox, desktop_safari, desktop_opera, desktop_edge, mobile, mobile_android, mobile_ios, tablet, tablet_android, tablet_ios. Default: desktop. |
| render_js | boolean | Optional | true renders JavaScript before reading the page (use for JS-heavy sites). Default: false. |
Returns the full HTML of the page. Best for developers who want to process the entire page themselves. / on its own is the same as /raw.
Responses
| Status | Description |
|---|---|
200 | Page HTML. |
401 | API key missing or invalid. |
402 | Not enough credits left on the subscription. |
403 | Key not authorized for this API, or the API or subscription is inactive, suspended or expired. |
422 | The page could not be scraped or nothing was found (e.g. NO_DATA_FOUND). |
curl -X GET "https://apipeak.dev/api/webscraper/raw?url=https://example.com" \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json"
{
"success": true,
"engine": "Scraper Engine",
"data": {
"url": "https:\/\/example.com",
"status_code": 200,
"content_length": 1256,
"html": "<!doctype html><html><head><title>Example Domain<\/title>..."
},
"warnings": [],
"meta": {
"time_ms": 2433,
"timestamp": "2026-10-24T11:29:50+00:00",
"scraper": "htmlscraper\/raw"
}
}
Structured JSON
Scrape any public web page and get it back in the format you need: raw HTML, structured JSON, Markdown, plain text or CSV. Each format is its own endpoint.
Ready to query this endpoint?
Sign up to get a free API key instantly with sandbox test credits. No card required.
Request Details
| Parameter | Type | Requirement | Description |
|---|---|---|---|
| url | string | Required | Page to scrape (http/https). |
| fields | string | Optional | Comma-separated list of fields to return. Returns all fields when omitted. Allowed: title, description, language, canonical, price, meta, headings, links, images, tables, lists, structured_data. |
| proxy_type | string | Optional | Proxy pool to scrape through. Allowed: premium, standard. Default: premium. |
| location | string | Optional | Country to scrape from. standard has 8 countries, premium has 248. Any letter case works. See /locations. Default: United States. |
| language | string | Optional | Locale code, e.g. en-GB, de-DE, pt-BR. Any case. See /languages. Default: en-US. |
| device | string | Optional | Device to emulate. See /devices. Allowed: desktop, desktop_chrome, desktop_firefox, desktop_safari, desktop_opera, desktop_edge, mobile, mobile_android, mobile_ios, tablet, tablet_android, tablet_ios. Default: desktop. |
| render_js | boolean | Optional | true renders JavaScript before reading the page (use for JS-heavy sites). Default: false. |
Extracts structured fields from the page: title, description, price, meta tags, headings, links, images, tables, lists and structured data.
- links: absolute URLs, de-duplicated;
typeisinternal,external,emailorphone. - images: absolute URLs, including lazy-loaded images (
data-src). - price: from JSON-LD offers, then
product:pricemeta tags, thenitemprop="price".nullif not found. - tables: colspan/rowspan expanded; multi-row headers merged into one header row.
Responses
| Status | Description |
|---|---|
200 | Extracted page fields. |
401 | API key missing or invalid. |
402 | Not enough credits left on the subscription. |
403 | Key not authorized for this API, or the API or subscription is inactive, suspended or expired. |
422 | The page could not be scraped or nothing was found (e.g. NO_DATA_FOUND). |
curl -X GET "https://apipeak.dev/api/webscraper/json?url=https://example.com" \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json"
{
"success": true,
"engine": "Scraper Engine",
"data": {
"url": "https:\/\/shop.com\/product\/1",
"status_code": 200,
"title": "Coffee Mug",
"description": "A ceramic coffee mug.",
"language": "en",
"canonical": "https:\/\/shop.com\/product\/1",
"price": {
"amount": "12.99",
"currency": "USD",
"source": "structured_data"
},
"meta": {
"og:title": "Coffee Mug",
"twitter:card": "summary"
},
"headings": [
{
"level": 1,
"text": "Coffee Mug"
}
],
"links": [
{
"text": "Help",
"url": "https:\/\/shop.com\/help",
"type": "internal"
}
],
"images": [
{
"url": "https:\/\/shop.com\/mug.png",
"alt": "A mug",
"width": 600,
"height": null
}
],
"tables": [
{
"index": 1,
"headers": [
"Name",
"Price"
],
"rows": [
[
"Mug",
"12.99"
]
]
}
],
"lists": [
{
"index": 1,
"type": "unordered",
"items": [
"One",
"Two"
]
}
],
"structured_data": [
{
"@type": "Product",
"name": "Coffee Mug"
}
]
},
"warnings": [],
"meta": {
"time_ms": 2433,
"timestamp": "2026-10-24T11:29:50+00:00",
"scraper": "htmlscraper\/json"
}
}
Markdown
Scrape any public web page and get it back in the format you need: raw HTML, structured JSON, Markdown, plain text or CSV. Each format is its own endpoint.
Ready to query this endpoint?
Sign up to get a free API key instantly with sandbox test credits. No card required.
Request Details
| Parameter | Type | Requirement | Description |
|---|---|---|---|
| url | string | Required | Page to scrape (http/https). |
| content | string | Optional | main = article only (drops menus, sidebars, footers, comments), full = whole page. Allowed: main, full. Default: main. |
| format | string | Optional | json = wrapped in the JSON response, md = the Markdown itself (text/markdown). Allowed: json, md. Default: json. |
| proxy_type | string | Optional | Proxy pool to scrape through. Allowed: premium, standard. Default: premium. |
| location | string | Optional | Country to scrape from. standard has 8 countries, premium has 248. Any letter case works. See /locations. Default: United States. |
| language | string | Optional | Locale code, e.g. en-GB, de-DE, pt-BR. Any case. See /languages. Default: en-US. |
| device | string | Optional | Device to emulate. See /devices. Allowed: desktop, desktop_chrome, desktop_firefox, desktop_safari, desktop_opera, desktop_edge, mobile, mobile_android, mobile_ios, tablet, tablet_android, tablet_ios. Default: desktop. |
| render_js | boolean | Optional | true renders JavaScript before reading the page (use for JS-heavy sites). Default: false. |
Converts the page to Markdown. Best for AI tools, document processing and readable articles. Supports headings, bold/italic, links, images, nested lists, code blocks (with language), quotes and tables.
Responses
| Status | Description |
|---|---|
200 | Page content as Markdown. |
401 | API key missing or invalid. |
402 | Not enough credits left on the subscription. |
403 | Key not authorized for this API, or the API or subscription is inactive, suspended or expired. |
422 | The page could not be scraped or nothing was found (e.g. NO_DATA_FOUND). |
curl -X GET "https://apipeak.dev/api/webscraper/markdown?url=https://example.com" \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json"
{
"success": true,
"engine": "Scraper Engine",
"data": {
"url": "https:\/\/en.wikipedia.org\/wiki\/Web_scraping",
"status_code": 200,
"title": "Web scraping",
"length": 18234,
"markdown": "# Web scraping\n\n**Web scraping** is data scraping used for extracting data from websites..."
},
"warnings": [],
"meta": {
"time_ms": 3120,
"timestamp": "2026-10-24T11:29:50+00:00",
"scraper": "htmlscraper\/markdown"
}
}
Plain text
Scrape any public web page and get it back in the format you need: raw HTML, structured JSON, Markdown, plain text or CSV. Each format is its own endpoint.
Ready to query this endpoint?
Sign up to get a free API key instantly with sandbox test credits. No card required.
Request Details
| Parameter | Type | Requirement | Description |
|---|---|---|---|
| url | string | Required | Page to scrape (http/https). |
| content | string | Optional | main = article only (drops menus, sidebars, footers, comments), full = whole page. Allowed: main, full. Default: main. |
| format | string | Optional | json = wrapped in the JSON response, txt = the text itself (text/plain). Allowed: json, txt. Default: json. |
| proxy_type | string | Optional | Proxy pool to scrape through. Allowed: premium, standard. Default: premium. |
| location | string | Optional | Country to scrape from. standard has 8 countries, premium has 248. Any letter case works. See /locations. Default: United States. |
| language | string | Optional | Locale code, e.g. en-GB, de-DE, pt-BR. Any case. See /languages. Default: en-US. |
| device | string | Optional | Device to emulate. See /devices. Allowed: desktop, desktop_chrome, desktop_firefox, desktop_safari, desktop_opera, desktop_edge, mobile, mobile_android, mobile_ios, tablet, tablet_android, tablet_ios. Default: desktop. |
| render_js | boolean | Optional | true renders JavaScript before reading the page (use for JS-heavy sites). Default: false. |
Returns clean page content without HTML tags.
Responses
| Status | Description |
|---|---|
200 | Page content as plain text. |
401 | API key missing or invalid. |
402 | Not enough credits left on the subscription. |
403 | Key not authorized for this API, or the API or subscription is inactive, suspended or expired. |
422 | The page could not be scraped or nothing was found (e.g. NO_DATA_FOUND). |
curl -X GET "https://apipeak.dev/api/webscraper/text?url=https://example.com" \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json"
{
"success": true,
"engine": "Scraper Engine",
"data": {
"url": "https:\/\/example.com",
"status_code": 200,
"title": "Example Domain",
"word_count": 30,
"length": 178,
"text": "Example Domain\n\nThis domain is for use in illustrative examples in documents..."
},
"warnings": [],
"meta": {
"time_ms": 1850,
"timestamp": "2026-10-24T11:29:50+00:00",
"scraper": "htmlscraper\/text"
}
}
CSV export
Scrape any public web page and get it back in the format you need: raw HTML, structured JSON, Markdown, plain text or CSV. Each format is its own endpoint.
Ready to query this endpoint?
Sign up to get a free API key instantly with sandbox test credits. No card required.
Request Details
| Parameter | Type | Requirement | Description |
|---|---|---|---|
| url | string | Required | Page to scrape (http/https). |
| source | string | Optional | What to export. Allowed: tables, links, images, headings, lists. Default: tables. |
| table | string | Optional | all or a table number (1 = first table). Only used with source=tables. Default: all. |
| format | string | Optional | csv = file, json = the same rows as JSON. Allowed: csv, json. Default: csv. |
| download | boolean | Optional | true = browser saves the file, false = show it inline. Default: true. |
| proxy_type | string | Optional | Proxy pool to scrape through. Allowed: premium, standard. Default: premium. |
| location | string | Optional | Country to scrape from. standard has 8 countries, premium has 248. Any letter case works. See /locations. Default: United States. |
| language | string | Optional | Locale code, e.g. en-GB, de-DE, pt-BR. Any case. See /languages. Default: en-US. |
| device | string | Optional | Device to emulate. See /devices. Allowed: desktop, desktop_chrome, desktop_firefox, desktop_safari, desktop_opera, desktop_edge, mobile, mobile_android, mobile_ios, tablet, tablet_android, tablet_ios. Default: desktop. |
| render_js | boolean | Optional | true renders JavaScript before reading the page (use for JS-heavy sites). Default: false. |
Exports tables or lists from the page as an Excel-ready CSV (UTF-8 with BOM, quoted fields, and cells starting with = + - @ prefixed with '). File name: <site>-<source>.csv.
Columns per source:
| source | Columns |
|---|---|
tables |
The table's own headers. With table=all, each table starts with a Table N row and tables are separated by a blank row |
links |
text, url, type |
images |
url, alt, width, height |
headings |
level, text |
lists |
list, type, item |
If nothing is found, the response is NO_DATA_FOUND (422).
Responses
| Status | Description |
|---|---|
200 | CSV file, or the same rows as JSON when format=json. |
401 | API key missing or invalid. |
402 | Not enough credits left on the subscription. |
403 | Key not authorized for this API, or the API or subscription is inactive, suspended or expired. |
422 | The page could not be scraped or nothing was found (e.g. NO_DATA_FOUND). |
curl -X GET "https://apipeak.dev/api/webscraper/csv?url=https://example.com" \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json"
text,url,type
"Help","https://shop.com/help","internal"
Supported locations
Scrape any public web page and get it back in the format you need: raw HTML, structured JSON, Markdown, plain text or CSV. Each format is its own endpoint.
Ready to query this endpoint?
Sign up to get a free API key instantly with sandbox test credits. No card required.
Request Details
No parameters required for this endpoint.
Lists the countries you can scrape from. standard proxies support 8 countries, premium supports 248.
Responses
| Status | Description |
|---|---|
200 | List of supported values. |
401 | API key missing or invalid. |
402 | Not enough credits left on the subscription. |
403 | Key not authorized for this API, or the API or subscription is inactive, suspended or expired. |
curl -X GET "https://apipeak.dev/api/webscraper/locations" \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json"
{
"success": true,
"engine": "Scraper Engine",
"data": [],
"warnings": [
"string"
],
"meta": {
"time_ms": 0,
"timestamp": "string",
"scraper": "string",
"options": []
}
}
Supported languages
Scrape any public web page and get it back in the format you need: raw HTML, structured JSON, Markdown, plain text or CSV. Each format is its own endpoint.
Ready to query this endpoint?
Sign up to get a free API key instantly with sandbox test credits. No card required.
Request Details
No parameters required for this endpoint.
Lists the locale codes accepted by the language parameter.
Responses
| Status | Description |
|---|---|
200 | List of supported values. |
401 | API key missing or invalid. |
402 | Not enough credits left on the subscription. |
403 | Key not authorized for this API, or the API or subscription is inactive, suspended or expired. |
curl -X GET "https://apipeak.dev/api/webscraper/languages" \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json"
{
"success": true,
"engine": "Scraper Engine",
"data": [],
"warnings": [
"string"
],
"meta": {
"time_ms": 0,
"timestamp": "string",
"scraper": "string",
"options": []
}
}
Supported devices
Scrape any public web page and get it back in the format you need: raw HTML, structured JSON, Markdown, plain text or CSV. Each format is its own endpoint.
Ready to query this endpoint?
Sign up to get a free API key instantly with sandbox test credits. No card required.
Request Details
No parameters required for this endpoint.
Lists the values accepted by the device parameter.
Responses
| Status | Description |
|---|---|
200 | List of supported values. |
401 | API key missing or invalid. |
402 | Not enough credits left on the subscription. |
403 | Key not authorized for this API, or the API or subscription is inactive, suspended or expired. |
curl -X GET "https://apipeak.dev/api/webscraper/devices" \
-H "X-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json"
{
"success": true,
"engine": "Scraper Engine",
"data": [],
"warnings": [
"string"
],
"meta": {
"time_ms": 0,
"timestamp": "string",
"scraper": "string",
"options": []
}
}
Flexible Subscriptions
Choose the monthly credit subscription that supports your development throughput. Cancel or shift tiers at any time.
FREE
Perfect for exploring the API
- 50 requests per month
- Developer Sandbox Credentials
- Instant API Key Activation
PRO
Best for indie developers and small projects
- 5,000 requests per month
- Developer Sandbox Credentials
- Instant API Key Activation
ULTRA
Ideal for SaaS products and tools
- 20,000 requests per month
- Developer Sandbox Credentials
- Instant API Key Activation
MEGA
Built for agencies and businesses
- 100,000 requests per month
- Developer Sandbox Credentials
- Instant API Key Activation