npx skills add hasdata/agent-skills

Agent skills for web scraping,
and the scraper stays yours

Your agent reads one file when the prompt calls for it, then writes the request in the stack your project already uses. No page is piped through the context window, and the file still runs after the conversation ends.

1,000 free credits. No credit card required.

knowledge, not a tool·code in your language·the code outlives the session
SKILL.mdHasData/agent-skills
$ npx skills add hasdata/agent-skills
# what your agent knows after that
Any URL, rendered and extractedPOST /scrape/web
Web Scraping API · seconds · CSS and AI extraction, screenshots
Known platforms, parsed fieldsGET /scrape/<vertical>/<resource>
Scraper APIs, sync · seconds · JSON, not markup
Whole sites, in bulkPOST /scrapers/<slug>/jobs
Scraper Jobs, async · minutes to hours · recursive crawls, webhooks
››"Default to a Scraper API when one exists for the platform" · the line that saves you from maintaining selectors.
ClientsClients

Install it once. The agent reaches for it on its own.

Claude Code takes it as a plugin, editors read it from a folder, and anything that understands the format takes the npx line. The key is the only shared step.

$ npx skills add hasdata/agent-skills
The installer detects the agents you actually have and writes into each one's skills directory. Any harness that reads the Agent Skills format qualifies. Re-run the same line to pull the current version.
BEFORE THE FIRST RUN
1A HasData account at app.hasdata.com, where the key lives
2The key in an env variable: export HASDATA_API_KEY="..."
3The HasData CLI, only if you take the hasdata-cli skill
The key never goes into the skill. The code your agent writes reads HASDATA_API_KEY at run time, which is why the same file works in CI.

Web scraping tasks your agent turns into code.

What reaches the model is a handful of named fields, not a page of HTML, so the context stays small and the code stays short.

Prompt

Keep a sheet of dental clinics in Austin with name, phone and rating, refreshed every Monday.

What the skill settles

a Scraper API exists for maps, so the rule picks the parsed endpoint
for a platform we parse there are no selectors at all, the answer is already fields
twenty places come back per page, and paging is a parameter
lead-sheetwhat the agent writes
callone request per page, parameters straight from the endpoint table
paginatekeep going until a page comes back short
readtake the named fields off the response
logicskip rows already in the sheet, keyed by placeId, because phone is often null
writeappend to the sheet
scheduleMonday, unattended
fields it reads
titlephoneratingwebsiteplaceId

Nothing in that file breaks when the site changes its markup, because none of it reads markup.

Already parsed, field by field.

The skill names these sources, so the agent picks one instead of guessing at a page. Everything else still goes through the Web Scraping API.

All Scraper APIs
Search

Search, every surface of it

The Google results page, Light SERP, AI Mode, the AI Overview block, News, Shopping, Images, Events and short videos. Plus Bing and Trends.

positiontitlelinksnippet
Local & leads

Businesses, phone included

Google Maps places, reviews, contributor reviews, photos and posts. Plus Yelp and YellowPages.

phonewebsiteratingaddress
Listings & stays

Homes, stays and fares

Zillow, Redfin, Airbnb, Booking, Google Hotels, Google Flights.

pricebedsareadaysOnZillow
Commerce

Products and their sellers

Amazon search, product, seller and seller inventory. Plus Shopify.

currentPricebeforePrice
Video & social

Channels, posts and transcripts

YouTube search, video, channel and transcript. TikTok profile, posts and keyword search. Instagram.

viewslikesfollowersCounthashtags
Jobs

Openings and employers

Indeed for the openings, Glassdoor for the employers behind them.

companylocationsalarysponsored
Universal

Anything with a URL

Any public URL through the Web Scraping API. Markdown for reading, or name the fields and get typed JSON. A site we don't parse out of the box is a custom scraper away.

markdown text emails links

1,000 free credits is a finished job.

100 SERPs
the parsed page of Google, position to snippet
100 × 10 credits, the free tier exactly
~4,000 rows
Maps businesses, phones where Google has them
200 pages × 5 credits · 20 per page
1,000 pages
read as clean markdown
1 credit each when the code reads the page without rendering, 10 with it on
Free
$0 /mo
One-time free trial
1,000 credits to start
1,000 credits, one time
1 concurrent request
Pay only for successful requests
One balance for the code it writes, the CLI and REST
Start free
Startup
$49 /mo
$0.24 / 1k credits
200K credits / month
200K credits / month
15 concurrent requests
Pay only for successful requests
One balance for the code it writes, the CLI and REST
Get started
Business
Recommended
$99 /mo
$0.10 / 1k credits
1M credits / month
1M credits / month
30 concurrent requests
Pay only for successful requests
One balance for the code it writes, the CLI and REST
Get started
Growth
$249 /mo
$0.08 / 1k credits
3M credits / month
50 concurrent requests
Pay only for successful requests
One balance for the code it writes, the CLI and REST
Get started
Monthly credit volume
Free 1M 5M 20M 60M 100M
Best fit
Business
credits / mo
1M
Concurrency
30
$ / 1k credits
$0.10
$99 /mo
Get Started
Enterprise
Custom price based on required volume

Past 100M credits a month, or terms the self-serve plans do not cover. We shape the contract around your workload.

Credits rollover
Unused credits carry into the next billing period.
Concurrency 2000+
Parallel request limits set to your peak load.
#1 request priority
Highest speed, always first in the queue.
Personal manager
A direct line to the founding team.
SSO
SAML single sign-on for the whole team.
SOC-2 compliance
Security review, DPA, and audit reports.
Talk to sales Quote within one business day

Frequently asked
questions.

The short answers. Everything longer lives in the docs and on Discord.

What are agent skills and how to use them?

An agent skill is a folder with a SKILL.md inside, and the agent reads that file when a prompt matches what it says it covers. This one carries the HasData endpoints, their parameters and the shape of what comes back, so the agent writes a working scraper instead of guessing. Install it once with npx skills add hasdata/agent-skills, then ask for the data you want in plain language.

How is this different from the MCP server?

MCP gives the agent tools to call during a conversation, and every page it fetches lands in the context window. A skill gives it knowledge instead, and what you keep is code in your repository that runs afterwards without an agent. On a run of a few hundred pages that difference is the whole cost, because the scraper writes rows to disk while the agent stays out of the loop. Same endpoints, same balance, different thing to own.

Are the skills free?

Yes. They are markdown in a public repository, so you can install them, read them and fork them. Credits only move when the code your agent writes calls the API, and you start with 1,000 free, no card.

Which agents does it work in?

One line covers most of them. npx skills add hasdata/agent-skills detects what you have installed and writes into each agent's own skills directory, and that registry already knows Claude Code, Cursor, VS Code through Copilot, Codex, Gemini CLI, Devin, Zed and Warp among others. Anything else that reads a SKILL.md can point at the two files directly.

Do I need the CLI?

Only for the hasdata-cli skill, which drives terminal work. The hasdata skill needs nothing but your key.

How many requests can the code run at once?

One on the free tier, so a loop over pages runs sequentially. Paid plans start at 15 concurrent requests. Past your limit the API answers 429, and nothing is charged for the calls that failed.

Do I have to invoke it?

No. It activates when a prompt looks like a HasData job, whether that is scraping, SERP, lead enrichment or price tracking, and the CLI skill even carries a section named Non-obvious triggers for the cases where nobody says "scrape". /hasdata and /hasdata-cli call it explicitly.

What language will the code be in?

Whichever your project already uses. The skill carries endpoints, parameters and response shapes rather than a client library, so the agent writes the request in your stack.

Why not just write my own SKILL.md?

You can, it's markdown. What this one saves is the part that goes stale. Which endpoint answers a given task, what its parameters are called, what comes back. Re-running the add pulls whatever the repo has, so the maintenance is one line instead of a rewrite.

One line away.

The agent reads the endpoints, writes the scraper and hands you the file. What runs on Monday is your code, not a conversation.

Get started → Documentation

Free, open skills · 1,000 free credits · no card