Skip to content

MCP server ​

The Model Context Protocol (MCP) is the open standard AI assistants use to call external tools. ScrapeIt runs a hosted MCP server: point Claude, Cursor, VS Code or any other MCP client at one URL, give it an API key, and the assistant can scrape pages, search Google, Google Maps, Amazon, Booking.com, Yelp, Walmart, eBay, Zillow, Apartments.com, Allegro, Redfin, Tripadvisor, Airbnb and Yellow Pages, start crawls and batches and check your credit balance - no code, no local install.

SettingValue
URLhttps://api.scrapeit.io/api/v1/mcp
TransportStreamable HTTP, stateless - MCP revision 2026-07-28 and the 2025 revisions
Authx-api-key: YOUR_SCRAPEIT_API_KEY or Authorization: Bearer YOUR_SCRAPEIT_API_KEY

Every tool call runs the same engine as the REST API: the same proxies, anti-bot handling, SSRF protection, concurrency limits and billing outcome rules.

Connect your client ​

Create an API key in Workspace → API Keys with only the scopes the assistant needs, then add the server to your client.

Claude Code ​

bash
claude mcp add --transport http scrapeit https://api.scrapeit.io/api/v1/mcp \
  --header "x-api-key: YOUR_SCRAPEIT_API_KEY"

Cursor ​

Add the server to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):

json
{
  "mcpServers": {
    "scrapeit": {
      "url": "https://api.scrapeit.io/api/v1/mcp",
      "headers": { "x-api-key": "YOUR_SCRAPEIT_API_KEY" }
    }
  }
}

VS Code (GitHub Copilot agent mode) ​

Add .vscode/mcp.json to the workspace. VS Code asks for the key once and stores it securely:

json
{
  "inputs": [
    {
      "type": "promptString",
      "id": "scrapeit-api-key",
      "description": "ScrapeIt API key",
      "password": true
    }
  ],
  "servers": {
    "scrapeit": {
      "type": "http",
      "url": "https://api.scrapeit.io/api/v1/mcp",
      "headers": { "x-api-key": "${input:scrapeit-api-key}" }
    }
  }
}

Claude Desktop ​

Claude Desktop reaches remote servers with custom headers through the mcp-remote bridge (needs Node.js). Add this to claude_desktop_config.json (Settings → Developer → Edit Config) and restart Claude:

json
{
  "mcpServers": {
    "scrapeit": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.scrapeit.io/api/v1/mcp",
        "--header",
        "x-api-key:${SCRAPEIT_API_KEY}"
      ],
      "env": { "SCRAPEIT_API_KEY": "YOUR_SCRAPEIT_API_KEY" }
    }
  }
}

Any other MCP client ​

Use the Streamable HTTP transport with the URL above and send the key in x-api-key or as Authorization: Bearer. The server keeps no session: every request is authenticated on its own, so GET and DELETE on the endpoint answer 405.

Tools and scopes ​

Each tool needs the same API key scope as its REST endpoint. A key without it gets a PERMISSION_DENIED error naming the missing scope in details.required_scope; the other tools keep working.

ToolWhat it doesScopeSame as
scrape_urlScrape one page; returns markdown by default, plus extractRules / aiExtractRules results.scrape:webPOST /api/v1/scrape/web
google_searchOne Google results page as JSON (organic, ads, People also ask, related, knowledge panel).scrape:webGET /api/v1/scrape/google/search
google_maps_searchOne page of Google Maps places (twenty per page) as JSON.scrape:webGET /api/v1/scrape/google/maps/search
google_maps_placeOne place by place_id, data_id, cid or url: hours, attributes, photos, top reviews.scrape:webGET /api/v1/scrape/google/maps/place
google_maps_reviewsReviews of one place by sort and keyword query, up to 5 per call: rating, text, translation, likes, photos, visit details, owner response.scrape:webGET /api/v1/scrape/google/maps/reviews
amazon_searchOne Amazon search results page as JSON.scrape:webGET /api/v1/scrape/amazon/search
amazon_productOne Amazon product by ASIN or URL as JSON.scrape:webGET /api/v1/scrape/amazon/product
amazon_best_sellersOne Amazon Best Sellers page (50 ranked products) by category or url.scrape:webGET /api/v1/scrape/amazon/best-sellers
booking_searchBooking.com properties for a destination and dates (destination, checkin, checkout).scrape:webGET /api/v1/scrape/booking/search
booking_hotelOne Booking.com property by url or hotel_id; room prices with dates.scrape:webGET /api/v1/scrape/booking/hotel
yelp_searchOne page of Yelp businesses for find_loc (and optionally find_desc).scrape:webGET /api/v1/scrape/yelp/search
yelp_businessOne Yelp business by alias or url.scrape:webGET /api/v1/scrape/yelp/business
walmart_searchOne walmart.com search results page as JSON.scrape:webGET /api/v1/scrape/walmart/search
walmart_productOne walmart.com product by item_id or url.scrape:webGET /api/v1/scrape/walmart/product
ebay_searchOne www.ebay.com search page (60, 120 or 240 listings) with filters as JSON.scrape:webGET /api/v1/scrape/ebay/search
ebay_itemOne www.ebay.com item by item_id or url, optionally with the full description.scrape:webGET /api/v1/scrape/ebay/item
zillow_listingzillow.com homes for sale, for rent or sold in a US city and state, with filters.scrape:webGET /api/v1/scrape/zillow/listing
zillow_propertyOne zillow.com property by url: facts, schools, price and tax history, listing agent.scrape:webGET /api/v1/scrape/zillow/property
apartments_listingapartments.com rentals in a US city and state, with filters.scrape:webGET /api/v1/scrape/apartments/listing
apartments_propertyOne apartments.com property by url: floor plans, units, fees, scores.scrape:webGET /api/v1/scrape/apartments/property
allegro_listingallegro.pl offers by phrase, category_id, url or product_id, with filters and page_token paging.scrape:webGET /api/v1/scrape/allegro/listing
allegro_offerOne allegro.pl offer by offer_id or url.scrape:webGET /api/v1/scrape/allegro/offer
redfin_searchHomes of a redfin.com area by location or url, with filters; the first 50 unless limit (up to 350).scrape:webGET /api/v1/scrape/redfin/search
redfin_propertyOne redfin.com property by property_id or url: facts, Redfin Estimate, records, tax, history.scrape:webGET /api/v1/scrape/redfin/property
tripadvisor_searchOne tripadvisor.com hotels or restaurants list (30 places) by location, geo_id or url; hotel prices for checkin/checkout.scrape:webGET /api/v1/scrape/tripadvisor/search
tripadvisor_placeOne tripadvisor.com hotel or restaurant by url.scrape:webGET /api/v1/scrape/tripadvisor/place
airbnb_searchOne page of airbnb.com stays (18 listings) for a location, dates and guests.scrape:webGET /api/v1/scrape/airbnb/search
airbnb_listingOne airbnb.com listing by listing_id or url, priced for your dates.scrape:webGET /api/v1/scrape/airbnb/listing
yellowpages_searchOne page of yellowpages.com businesses (30) for q and a US location.scrape:webGET /api/v1/scrape/yellowpages/search
yellowpages_businessOne yellowpages.com business by url: contacts, hours, categories, reviews.scrape:webGET /api/v1/scrape/yellowpages/business
glassdoor_listingOne page of www.glassdoor.com jobs (30) for q and a location, with salary, date and type filters; cursor pages on.scrape:webGET /api/v1/scrape/glassdoor/listing
glassdoor_jobOne www.glassdoor.com job by job_id or url: description, pay, job type, skills and the employer profile.scrape:webGET /api/v1/scrape/glassdoor/job
glassdoor_companiesOne page of www.glassdoor.com companies (10) by location, sector, industry and rating.scrape:webGET /api/v1/scrape/glassdoor/companies
glassdoor_companyOne www.glassdoor.com company by company_id or url: ratings, counts, offices.scrape:webGET /api/v1/scrape/glassdoor/company
crawl_startStart a Website Crawler job.scrapers:runPOST /api/v1/scrapers/crawler/jobs
crawl_statusStatus and progress of a crawl.scrapers:readGET /api/v1/scrapers/jobs/{id}
batch_startStart a batch over many URLs.scrape:batchPOST /api/v1/scrape/batch/web
job_statusStatus, progress and cost of any job (batch, crawl or single request).scrapers:readGET /api/v1/jobs/{id}
job_stopStop a running batch or crawl.scrapers:stopDELETE /api/v1/scrape/jobs/{id}
get_usageCredit balance, plan limits and usage of the current period.usage:readGET /api/v1/usage/me

The arguments are the ones of the REST endpoint (for example url, jsRendering, outputFormat, extractRules, aiExtractRules, proxyType, proxyCountry and screenshot for scrape_url) and are validated by the same rules; your client shows each tool's full argument list.

Pricing ​

A tool call costs exactly what the REST request costs - see Request cost and the product pages for the price lists. crawl_status, job_status, job_stop and get_usage are free. Tool calls share your plan's concurrency slots and request rate limit with your REST traffic.

Responses and limits ​

  • Page content. scrape_url returns a short JSON summary (status, cost, files, content.json, ai_extraction) followed by the page itself as plain text - markdown unless you ask for another outputFormat.
  • Time. A tool call that scrapes answers within 90 seconds, like the REST site APIs: a step that would end later is not started, and the call answers SCRAPE_TIMEOUT without charging it. A larger timeoutMs on scrape_url is cut to what is left of the 90 seconds.
  • Size. A tool result carries at most 100,000 characters (about 25,000 tokens), so one page cannot flood the assistant's context. Longer content is cut and ends with a [Scrapeit: truncated, …] note; ask for specific fields with extractRules or aiExtractRules instead of whole pages.
  • Request size. One MCP request body is limited to 1 MiB. Send large URL lists through the REST Batch Scraping API instead of batch_start.
  • One message per request. JSON-RPC batches (an array of messages in one body, dropped from MCP in revision 2025-06-18) are refused with HTTP 400 Invalid Request; send each tool call as its own request. Every request counts against the request rate limit.
  • No change notifications. The tool list does not change while a client is connected, so the server advertises listChanged: false: a subscriptions/listen request is acknowledged with no subscriptions and closed at once, and GET (a 2025-era notification stream) answers 405.
  • Results in Files. A site API tool call keeps its JSON result in Files, and scrape_url its page and content, as the same REST request does.
  • Results of async jobs. crawl_start and batch_start return the job at once; their results are in the dashboard, Files and your webhooks.

Errors ​

A failed call comes back as a tool result marked as an error, carrying the same body as the REST API, for example:

json
{
  "error": {
    "code": "INSUFFICIENT_CREDITS",
    "message": "Insufficient credits.",
    "correlation_id": "…"
  }
}
CodeMeaning
PERMISSION_DENIEDThe key lacks the tool's scope (details.required_scope).
VALIDATION_ERRORAn argument failed the endpoint's validation; the message names it.
INSUFFICIENT_CREDITSThe balance cannot cover the estimated cost. Nothing ran.
CONCURRENCY_LIMIT_EXCEEDEDAll concurrent slots of the plan are busy. Retry when a request finishes.
INTERNAL_ERRORA platform failure. Quote the correlation_id to support.

A missing or revoked key is refused before any tool runs with HTTP 401 INVALID_API_KEY, and too many requests with HTTP 429 RATE_LIMIT_EXCEEDED. All codes are listed in Error codes.

Security ​

  • One key per client, least scopes. A research assistant that only reads job status needs scrapers:read and usage:read; leave scrape:web, scrapers:run and scrape:batch off keys that should never spend credits.
  • Scraped pages are untrusted text. A page can contain instructions aimed at the assistant. Keep your client's per-tool approval on for the paid tools, and watch the Usage page.
  • Your workspace only. A key acts inside the workspace it was created in; no tool reaches another workspace or any admin function. The key is never returned by a tool or written to logs.

ScrapeIt Web Scraping API documentation. Managed web scraping services: www.scrapeit.io.