skills/scraperapi-agent-onboarding/SKILL.md
Entry point for agents and developers new to ScraperAPI. Read first when integrating ScraperAPI into an agent or app, setting up the MCP server for Claude Code or other LLM tools, choosing the right ScraperAPI product, or obtaining an API key. Trigger on: "how do I use ScraperAPI", "set up ScraperAPI", "connect ScraperAPI to Claude", "which ScraperAPI product should I use", "get web data for my agent", "scrape a website in my app", "add web scraping to my project", "ScraperAPI getting started". After reading, route to the narrower skill that owns the selected path.
npx skillsauth add scraperapi/scraperapi-skills scraperapi-agent-onboardingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
ScraperAPI gives agents and apps reliable access to web data: any URL returned as clean HTML or markdown (with proxy rotation, CAPTCHA bypass, and JS rendering handled automatically), structured JSON from 20+ supported platforms (Amazon, Walmart, eBay, Redfin, Google SERP), and a crawler for multi-page extraction.
This skill is the entry point. Read it once, pick a path, then hand off to the narrower skill that owns that path.
All paths require a ScraperAPI key. If you don't have one:
# macOS / Linux
export SCRAPERAPI_API_KEY=<your-key>
# Windows PowerShell
$env:SCRAPERAPI_API_KEY = "<your-key>"
# .env file
SCRAPERAPI_API_KEY=...
Verify the key works before doing real work:
curl "https://api.scraperapi.com/?api_key=$SCRAPERAPI_API_KEY&url=https://httpbin.org/ip"
A JSON response with an origin IP confirms the key is valid. A 401 means the key is wrong or
inactive — do not retry with the same key, surface the error.
| Situation | Path | |-----------|------| | LLM agent needs web data during this session | Path A — MCP Server | | Adding ScraperAPI to app code | Path B — SDK / REST integration | | Quick request, or environment without Node/Python | Path C — REST API directly | | Need an API key first | Path D — Auth only (above) |
If your task spans paths, do them in order: get key → MCP or SDK → test one real request before building.
Use this when the consumer is an LLM agent (Claude Code, custom agent loop) that should call ScraperAPI as tools. The MCP server exposes up to 22 tools — scrape, Google, Amazon, Walmart, eBay, Redfin, and crawler — over a single connection.
No installation required. All 22 tools available.
Add to your claude_desktop_config.json, Claude Code project settings, or MCP client config:
{
"mcpServers": {
"ScraperAPI": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.scraperapi.com/mcp",
"--header",
"Authorization: Bearer ${SCRAPERAPI_API_KEY}"
]
}
}
}
Requires SCRAPERAPI_API_KEY set in the environment. npx mcp-remote handles the remote
connection — no separate install step needed.
If you prefer a local server or the remote endpoint is unavailable. Requires Python 3.11+.
pip install scraperapi-mcp-server
{
"mcpServers": {
"ScraperAPI": {
"command": "python",
"args": ["-m", "scraperapi_mcp_server"],
"env": { "API_KEY": "<YOUR_SCRAPERAPI_API_KEY>" }
}
}
}
The local server exposes only the scrape tool. For structured Google search data on the local
variant, use scrape with autoparse: true and outputFormat: "json" on a Google search URL.
Hand off to the scraperapi-mcp skill. It owns tool selection, parameter optimization, credit
cost guidance, and error recovery for all 22 MCP tools. Also check the
MCP setup reference for variant detection and
troubleshooting.
Use this when you're building an application, script, or workflow that calls ScraperAPI from code.
Always run one real request before writing integration logic — catches auth, credit, and parameter issues before they hide inside your app's error paths:
import os, requests
r = requests.get(
"https://api.scraperapi.com/",
params={"api_key": os.environ["SCRAPERAPI_API_KEY"], "url": "https://httpbin.org/ip"}
)
print(r.status_code, r.text[:200])
A 200 with valid JSON confirms you're wired up.
| Job in the app | API | Key docs |
|----------------|-----|----------|
| Fetch any URL as HTML or markdown | Standard API | docs |
| Render JS-heavy pages (React, Vue, SPAs) | Standard API + render=true | docs |
| Structured JSON: Amazon, Google, Walmart, eBay, Redfin | Structured Data API | docs |
| Batch scraping / 100+ URLs | Async Jobs API | docs |
| Recurring, scheduled scraping without managing infra | DataPipeline (dashboard) | docs |
pip install scraperapi-sdk
import os
from scraperapi_sdk import ScraperAPIClient
client = ScraperAPIClient(os.environ["SCRAPERAPI_API_KEY"])
result = client.get("https://example.com", render=True, country_code="us")
print(result)
npm install scraperapi-sdk
const scraperapi = require('scraperapi-sdk')(process.env.SCRAPERAPI_API_KEY);
const result = await scraperapi.get('https://example.com', { render: true, country_code: 'us' });
console.log(result);
PHP, Ruby, and Java SDKs are also available — see docs.scraperapi.com for setup guides.
Use this when the environment can't run pip or npm, or when you only need a few requests.
Base URL: https://api.scraperapi.com/
Auth: api_key query parameter (or apiKey in the JSON body for async)
# Basic scrape
curl "https://api.scraperapi.com/?api_key=$SCRAPERAPI_API_KEY&url=https://example.com"
# With JS rendering
curl "https://api.scraperapi.com/?api_key=$SCRAPERAPI_API_KEY&url=https://example.com&render=true"
# Structured data — Google SERP
curl "https://api.scraperapi.com/structured/google/search?api_key=$SCRAPERAPI_API_KEY&query=web+scraping"
# Structured data — Amazon product
curl "https://api.scraperapi.com/structured/amazon/product?api_key=$SCRAPERAPI_API_KEY&asin=B09V3KXJPB"
# Submit an async job
curl -X POST "https://async.scraperapi.com/jobs" \
-H "Content-Type: application/json" \
-d "{\"apiKey\": \"$SCRAPERAPI_API_KEY\", \"url\": \"https://example.com\"}"
# Poll async job status
curl "https://async.scraperapi.com/jobs/<jobId>?apiKey=$SCRAPERAPI_API_KEY"
For the full parameter surface (premium proxies, country targeting, session stickiness, binary targets), see the API reference.
| Code | Meaning | Action |
|------|---------|--------|
| 200 | Success | Return / parse the body |
| 401 | Invalid API key | Surface error — do not retry |
| 403 | Blocked by target site | Retry with premium=true, ultra_premium=true, or a different country_code |
| 429 | Concurrent limit hit | Back off; switch to async for batch work |
| 500/503 | Transient failure | Retry with exponential backoff (3–5 attempts) |
Route to the narrowest skill or reference that fits the task:
| User says… | Go to |
|------------|-------|
| "scrape this URL" / "get this page" | scraperapi-mcp → scrape tool |
| "search Google for…" / "find URLs about…" | scraperapi-mcp → google_search |
| "get Amazon / Walmart / eBay data" | scraperapi-mcp → SDE tools |
| "real estate / Redfin listings" | scraperapi-mcp → Redfin tools |
| "crawl a website / extract all links" | scraperapi-mcp → crawler_job_start |
| "scrape 100+ URLs / batch job" | Async Jobs API — Path C above |
| "schedule recurring scraping" | DataPipeline — https://docs.scraperapi.com/ |
| "debug a failed scrape or blocked request" | scraperapi-mcp error recovery section |
When in doubt, prefer structured data endpoints over raw HTML scraping for supported platforms —
they return clean JSON with no parsing logic, are more reliable, and often cost fewer credits than
raw scraping with render=true.
development
SERP landscape analysis for SEO strategy decisions. Use this skill when the user wants to understand what a search results page actually looks like for their target keywords — including AI Overview presence and attribution, SERP feature composition, how Google is interpreting query intent, which competitors dominate specific keyword sets, and where organic rankings actually translate to visible traffic. Trigger on requests like "analyze the SERP for [keyword]," "why isn't my content getting traffic even though it ranks," "what does Google show for [keyword]," "which keywords are worth targeting," "is [keyword] dominated by AI Overviews," "who owns the SERP for [topic]," "SERP analysis," "keyword landscape," or any request to understand what's happening on a search results page before making a content or SEO strategy decision.
tools
Run a comprehensive SEO audit using ScraperAPI's live SERP and scraping tools — no setup required. Use this skill whenever the user wants to: audit SEO for a website, understand why a page isn't ranking, check SEO health, analyze keyword rankings, compare against competitors in search results, find content gaps, review on-page signals (titles, meta, headings, schema), diagnose a traffic drop, check indexation, or get prioritized SEO recommendations. Also trigger when the user says things like "why am I not showing up on Google," "my traffic dropped," "how do I rank for X," "what's wrong with my SEO," "SEO check," or "SEO review." This skill works out of the box — it uses the ScraperAPI MCP tools already connected to this session, with no CLI or API key setup needed.
development
Build and implement web scrapers using ScraperAPI. Use this skill whenever the user asks to build, write, create, or implement a scraper, or wants runnable code that extracts data from a website. Trigger on: "build me a scraper for [website]", "write a scraper that fetches product pages from [ecommerce site]", "I need to scrape [data] from [website]", "create a script that extracts [fields] from [URL]", "help me scrape [website] — I need [fields]", "write code to scrape [website]", "make a script that scrapes [website]", "implement a scraper for [URL]". Guides architectural decisions (structured endpoint vs. raw HTML, JS rendering, proxy tier, sync vs. async batch), then generates a complete runnable Python or Node.js script with retry logic, error handling, pagination, and credit estimation.
development
Use this skill whenever the user wants to check, track, or be alerted about product prices on Amazon, Walmart, or via Google Shopping. Trigger on: "monitor the price of this Amazon product", "did the price drop on [Walmart URL]?", "track these ASINs", "compare today's prices to last week", "alert me if [product] goes below $X", "what's the current price of [product]?", "check my price watchlist", "scrape the price of [URL]", "is [product] cheaper anywhere else?". Accepts ASINs, Amazon/Walmart product URLs, or free-text product queries for Google Shopping. Reads an optional baseline JSON file to detect changes, fetches live prices via ScraperAPI's structured endpoints, and reports increases, decreases, restocks, and out-of-stock transitions in a structured change report. Use this skill even when the user does not say the word "monitor" — any one-shot or recurring price-check request belongs here.