Scraper API

Web Scraping API

for any page as markdown, HTML, or JSON

Scrape any URL with one API call. Full JS rendering, then get the page as HTML, markdown, text, or a screenshot. Proxies, browsers, and retries handled for you.

SUCCESS
99.9%

of requests succeed

P50
5.4s

median response

P95
8.4s

95% finish faster

PRICE
$0.07

per 1k scrapes at volume

Stop maintaining scrapers

Every site is different. Your code shouldn't care.

  • A proxy pool to rotate
  • A headless fleet to keep warm
  • A parser per site
  • Retries and timeouts
  • Fix it again when the site changes
One integration commit replaces a backlog you’ll never finish.
scraper | git log
hotfix: markup changed, empty output
fix: headless Chrome OOM under load
fix: retry storm on 429s
chore: refresh proxy pool again
fix: JS render timeout on heavy pages
hotfix: cookie banner blocks content
chore: rotate user-agents, again
fix: markdown conversion drops tables
fix: lazy-loaded images never fire
fix: gzip response not decoded
hotfix: markup changed, empty output
fix: headless Chrome OOM under load
fix: retry storm on 429s
chore: refresh proxy pool again
fix: JS render timeout on heavy pages
hotfix: cookie banner blocks content
chore: rotate user-agents, again
fix: markdown conversion drops tables
fix: lazy-loaded images never fire
fix: gzip response not decoded
hotfix: markup changed, empty output
fix: headless Chrome OOM under load
fix: retry storm on 429s
chore: refresh proxy pool again
fix: JS render timeout on heavy pages
hotfix: cookie banner blocks content
chore: rotate user-agents, again
fix: markdown conversion drops tables
fix: lazy-loaded images never fire
fix: gzip response not decoded
hotfix: markup changed, empty output
fix: headless Chrome OOM under load
fix: retry storm on 429s
chore: refresh proxy pool again
fix: JS render timeout on heavy pages
hotfix: cookie banner blocks content
chore: rotate user-agents, again
fix: markdown conversion drops tables
fix: lazy-loaded images never fire
fix: gzip response not decoded
feat: integrate HasData API
Code Examples

One API call. That's the whole integration.

Start with just a query. Add more parameters when your use case needs them.

request example
curl --request POST \
	--url https://api.hasdata.com/scrape/web \
	--header 'Content-Type: application/json' \
	--header 'x-api-key: <YOUR_API_KEY>' \
	--data '
{
	"url": "https://example.com",
	"proxyType": "datacenter",
	"proxyCountry": "US",
	"blockResources": true,
	"blockAds": true,
	"extractRules": {
		"title": "h1"
	},
	"screenshot": true,
	"jsRendering": true,
	"extractEmails": true
}
'
url * URL
The URL of the web page to scrape.
proxyType Proxy Type
Type of proxy to use.
proxyCountry Proxy Country
Optional proxy country code.
extractRules Extraction Rules
Rules for extracting specific data from the page. For example: `{ "title": "h1", "link_href": "a#link @href", "page_text": "body" }`
screenshot Screenshot
Whether to take a screenshot of the page.
extractEmails Extract Emails
Extract emails from the page.
extractLinks Extract Links
Extract links from the page.
includeOnlyTags Include Only Tags
The `includeOnlyTags` parameter accepts an array of valid CSS selectors. When specified, only the elements matching these selectors will be included in the response content. Each value must be a valid `querySelectorAll` selector. Useful for extracting specific parts of the document.
excludeTags Exclude Tags
The `excludeTags` parameter accepts an array of valid CSS selectors. Elements matching these selectors will be removed from the final output. Each value must be a valid `querySelectorAll` selector. This can be used to remove ads, scripts, or other unwanted sections.
removeBase64Images Remove Base64 Images
If set to `true`, any images embedded as base64-encoded strings will be removed from the output. Useful for reducing response size or when base64 images are not needed.
aiExtractRules AI Extraction Rules
Defines custom rules for AI-based data extraction using LLMs. This enables the system to extract structured data directly from the HTML of the page. Each key in the object represents a desired output field name, and the value specifies its type and optional description to guide the AI. Supported types: - `string`: plain text value - `number`: numeric value - `boolean`: true/false - `list`: an array of values - `item`: a nested object with its own structure defined under `output`
wait Wait For A Time
Time in milliseconds to wait after the page load.
waitFor Wait For CSS Selector
CSS selector to wait for before scraping.
blockResources Block Images And CSS
Whether to block loading of resources like images and stylesheets.
blockAds Block ADS
Whether to block ads.
blockUrls Block URLs
List of URLs to block.
jsScenario JavaScript Execution
Enables custom JavaScript interactions on the target webpage during scraping. It's an array where each object defines a specific action or step. These actions can include clicking elements, waiting for elements, executing custom scripts, and more. Key actions within this field include: - `evaluate`: Run custom JavaScript code on the page. - `click`: Click on an element specified by a CSS selector. - `wait`: Pause for a set duration (in milliseconds). - `waitFor`: Delay until a specific element appears. - `waitForAndClick`: Combine waiting for an element and then clicking it. - `scrollX`, `scrollY`: Scroll to specified positions on the page. - `fill`: Enter values into input fields identified by CSS selectors. Actions are executed sequentially.
jsRendering JS Rendering
Enable JavaScript rendering.
headers Headers
Optional custom headers to send with the request.
outputFormat Output Format
The outputFormat parameter specifies the desired response format: `html`, `text`, `markdown`, or `json`. If only one of `html`, `text`, or `markdown` is provided, the API returns the response in that format. If multiple formats are specified, the API returns a JSON response with keys for each requested format. If `json` is included with any other format, the API returns a JSON response with keys for the other specified formats.
TRY ALL 20 PARAMETERS FREE
Response

One endpoint, the output you want

Ask for markdown, text, AI-extracted fields, or the raw artifacts. Same call, structured response.

markdown.md
// The page as clean Markdown, with headings, emphasis and links preserved

**Tesla, Inc.** is an American multinational [automotive](https://en.wikipedia.org/wiki/Automotive) and [clean energy](https://en.wikipedia.org/wiki/Clean_energy) company. Headquartered in [Austin, Texas](https://en.wikipedia.org/wiki/Austin,_Texas).

## History

### Founding (2003-2004)

The company was incorporated as Tesla Motors, Inc. on July 1, 2003, by [Martin Eberhard](https://en.wikipedia.org/wiki/Martin_Eberhard) and [Marc Tarpenning](https://en.wikipedia.org/wiki/Marc_Tarpenning).
Fields in markdown
markdown string

The page converted to clean Markdown, headings, emphasis and links intact, ready for LLMs and RAG

What We Offer

Everything You Need to Scrape at Scale

HasData handles the hard parts of scraping: rendering, parsing, scaling, and delivery. You can now focus on using the data, not collecting it.

Loved by developers

Teams that deleted their scraper

Now it's the part of the pipeline they don't think about

4.8 ★★★★★
across 100+ reviews on 5 platforms
Trustpilot Trustpilot ★★★★★

HasData delivers exactly what we need: speed and comprehensive search features. It's the fastest API we've used in this space. Plus, their customer support is fantastic.

Denver Sinclair
Denver Sinclair
Capterra Capterra ★★★★★

We rely on HasData for search performance data and broader scraping needs. Their APIs deliver highly structured data that integrates directly into our platforms.

JN
Jacob N.
Trustpilot Trustpilot ★★★★★

Great web scraping API which is incredibly easy to use. It requires minimal effort to get up and running, and the documentation is very clear and helpful.

Arnold Foster
Arnold Foster
Trustpilot Trustpilot ★★★★★

I needed to scrape some information they didn't already support, and they wrote the code for me right away, which was super nice of them.

Hussein Ali
Hussein Ali
Clutch Clutch ★★★★★

We were particularly impressed with how easily we could integrate HasData into our existing workflow.

TB
Taras Bazyshyn
CEO at BAZTDL Sp. z o.o
Pricing

Plans that get cheaper at scale

Fixed price, fixed volume, no surprises at the end of the month. Upgrade when you need more.

Free
$0 /mo
One-time free trial
1,000 scrapes to start
1 concurrent request
Team seats
Community support
Start free
Startup
$41 /mo
$0.20 / 1k scrapes
200K scrapes / month
15 concurrent requests
Team seats
Email support
Get started
Business
Recommended
$83 /mo
$0.08 / 1k scrapes
1M scrapes / month
30 concurrent requests
Team seats
Priority email support
Get started
Enterprise
$208 /mo
$0.07 / 1k scrapes
50 concurrent requests
Team seats
Dedicated account manager
Get started
Monthly scrape volume
Free 1M 5M 20M 60M 100M
Best fit
Business
scrapes / mo
1M
Concurrency
30
$ / 1k scrapes
$0.08
$83 /mo
Get Started

Start with 1,000 free scrapes. No credit card required.

FAQ

Questions, answered

1 Grab your API key 2 Send a GET request 3 Get structured JSON

Your first scrape
is minutes away

1000 scrapes free · no credit card