logo

Plugins

Use structured scraping plugins with the Async API for bulk data extraction

Plugins let you extract structured data from supported platforms (Amazon and the full Google Scraper API suite, including Search, Maps, Shopping, Flights, Hotels, News, Trends, and AI Mode) using the Async API. Instead of sending raw URLs, you specify a plugin key and parameters for each task. The API handles session management, geo-targeting, and response parsing automatically.


Request Structure

POST https://q.scrape.do/api/v1/jobs
X-Token: YOUR_TOKEN
Content-Type: application/json
{
  "Plugin": {
    "Key": "<plugin_key>",
    "Params": [
      { "param1": "value1", "param2": "value2" },
      { "param1": "value3", "param2": "value4" }
    ]
  },
  "WebhookURL": "https://example.com/webhook",
  "WebhookHeaders": { "Authorization": "Bearer your-token" }
}

Targets and Plugin are mutually exclusive. Using both returns 400 Bad Request. Each entry in Params becomes one task in the job. Maximum 1000 params per job.


Supported Plugins

KeyPlatformOutputDescription
amazon/pdpAmazonStructured JSONProduct Detail Page
amazon/searchAmazonStructured JSONSearch results
amazon/offer-listingAmazonStructured JSONAll seller offers
google/searchGoogleStructured JSONSERP results
google/search/ai-modeGoogleStructured JSONAI Mode response
google/maps/searchGoogleStructured JSONMaps places list
google/maps/placeGoogleStructured JSONMaps place details
google/maps/reviewsGoogleStructured JSONPaginated place reviews
google/shoppingGoogleStructured JSONShopping product results
google/flightsGoogleStructured JSONFlights itineraries + price insights
google/hotelsGoogleStructured JSONHotels listings
google/newsGoogleStructured JSONNews articles, topics, clusters
google/trendsGoogleStructured JSONTrends data
walmart/storeWalmartRaw HTMLStore-scoped request
lowes/storeLowesRaw HTMLStore-scoped request

google/search/ai-overview is not available as an async plugin. It requires a session_key from a prior google/search call (90-second TTL) and must be called directly on the gateway.


Amazon Plugins

amazon/pdp - Product Detail Page

Returns structured JSON with price, images, rating, buy box, reviews, BSR, and more.

curl -X POST "https://q.scrape.do/api/v1/jobs" \
  --header "X-Token: YOUR_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "Plugin": {
      "Key": "amazon/pdp",
      "Params": [
        { "asin": "B0CQMTCR9T", "zipcode": "32095", "geocode": "us" },
        { "asin": "B0DFK5Y3PQ", "zipcode": "10001", "geocode": "us" }
      ]
    }
  }'
ParamRequiredDescription
asinyesAmazon ASIN
geocodeyesCountry code (us, gb, de, etc.)
zipcodeyesZip/postal code
supernotrue for premium proxies
include_htmlnotrue to include raw HTML in response

amazon/search - Search Results

curl -X POST "https://q.scrape.do/api/v1/jobs" \
  --header "X-Token: YOUR_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "Plugin": {
      "Key": "amazon/search",
      "Params": [
        { "keyword": "wireless earbuds", "zipcode": "32095", "geocode": "us" },
        { "keyword": "wireless earbuds", "zipcode": "32095", "geocode": "us", "page": 2 }
      ]
    }
  }'
ParamRequiredDescription
keywordyesSearch query
geocodeyesCountry code
zipcodeyesZip/postal code
pagenoPage number (default 1)
include_htmlnotrue to include raw HTML

amazon/offer-listing - All Seller Offers

curl -X POST "https://q.scrape.do/api/v1/jobs" \
  --header "X-Token: YOUR_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "Plugin": {
      "Key": "amazon/offer-listing",
      "Params": [
        { "asin": "B0CQMTCR9T", "zipcode": "32095", "geocode": "us" }
      ]
    }
  }'

Google Plugins

All Google plugins return structured JSON and use premium proxies internally. No super flag needed.

google/search - SERP Results

curl -X POST "https://q.scrape.do/api/v1/jobs" \
  --header "X-Token: YOUR_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "Plugin": {
      "Key": "google/search",
      "Params": [
        { "q": "web scraping api", "gl": "us", "hl": "en" },
        { "q": "web scraping api", "gl": "gb", "hl": "en", "start": 10 }
      ]
    }
  }'
ParamRequiredDescription
qyesSearch query
glnoCountry code (default us)
hlnoLanguage code (default en)
google_domainnoGoogle domain (default google.com)
devicenodesktop or mobile
startnoResult offset (default 0)
include_htmlnotrue to include raw HTML

google/search/ai-mode - AI Mode

curl -X POST "https://q.scrape.do/api/v1/jobs" \
  --header "X-Token: YOUR_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "Plugin": {
      "Key": "google/search/ai-mode",
      "Params": [
        { "q": "best web scraping tools 2025", "gl": "us" },
        { "q": "how does web scraping work", "gl": "gb", "hl": "en" }
      ]
    }
  }'

google/maps/search - Maps Places List

curl -X POST "https://q.scrape.do/api/v1/jobs" \
  --header "X-Token: YOUR_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "Plugin": {
      "Key": "google/maps/search",
      "Params": [
        { "q": "pizza new york", "ll": "@40.7128,-74.0060,13z" },
        { "q": "hotels chicago", "start": 20, "hl": "en", "gl": "us" }
      ]
    }
  }'
ParamRequiredDescription
qyesSearch query
llnoLat/lng/zoom pin: @lat,lng,zoomz
startnoPage offset (multiples of 20)
hl / gl / google_domainnoStandard localization

google/maps/place - Maps Place Details

curl -X POST "https://q.scrape.do/api/v1/jobs" \
  --header "X-Token: YOUR_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "Plugin": {
      "Key": "google/maps/place",
      "Params": [
        { "place_id": "ChIJLSsVbGBZwokRR0LlGBSvMOI" },
        { "data_cid": "16313085445244584615" }
      ]
    }
  }'
ParamRequiredDescription
place_id*Google Place ID (ChIJ...). One of place_id or data_cid is required
data_cid*Numeric CID
hl / gl / google_domainnoStandard localization

Place endpoint does not accept data_id. Use place_id or data_cid.


google/maps/reviews - Maps Reviews

curl -X POST "https://q.scrape.do/api/v1/jobs" \
  --header "X-Token: YOUR_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "Plugin": {
      "Key": "google/maps/reviews",
      "Params": [
        { "data_id": "0x864c28f004653715:0x57c504dbf0bc93a0", "num": 20 },
        { "data_id": "0x864c28f004653715:0x57c504dbf0bc93a0", "sort_by": "newestFirst" }
      ]
    }
  }'
ParamRequiredDescription
data_id*Place ID in 0xHEX:0xHEX format. One of data_id or place_id is required
place_id*Place ID in ChIJ... format
numnoReviews per page (1–20, default 10)
sort_bynonewestFirst, ratingHigh, or ratingLow
topic_id / querynoFilter by topic or keyword (mutually exclusive)
next_page_tokennoCursor from previous response's pagination.next_page_token

google/shopping - Shopping Products

curl -X POST "https://q.scrape.do/api/v1/jobs" \
  --header "X-Token: YOUR_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "Plugin": {
      "Key": "google/shopping",
      "Params": [
        { "q": "laptop", "min_price": 500, "max_price": 1500 },
        { "q": "wireless headphones", "sort_by": 1, "free_shipping": true }
      ]
    }
  }'
ParamRequiredDescription
qyesSearch query
min_price / max_pricenoPrice range filter (integer)
sort_byno0 relevance, 1 price asc, 2 price desc
free_shipping / on_salenoBoolean filters
shoprsnoOpaque filter token from a previous response
devicenodesktop or mobile
startnoPagination offset
hl / gl / google_domain / location / uulenoStandard localization

google/flights - Flights Itineraries

curl -X POST "https://q.scrape.do/api/v1/jobs" \
  --header "X-Token: YOUR_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "Plugin": {
      "Key": "google/flights",
      "Params": [
        { "departure_id": "JFK", "arrival_id": "LAX", "outbound_date": "2026-06-15" },
        { "departure_id": "IST", "arrival_id": "LHR", "outbound_date": "2026-07-01", "return_date": "2026-07-15", "travel_class": 3, "currency": "EUR" }
      ]
    }
  }'
ParamRequiredDescription
departure_id / arrival_idyesIATA codes (comma-separated for multi-airport)
outbound_dateyesYYYY-MM-DD
return_datenoYYYY-MM-DD for round trip
typeno1 round trip, 2 one way (auto-inferred)
adults / children / infants_in_seat / infants_on_lapnoPassenger counts
travel_classno1 economy, 2 premium economy, 3 business, 4 first
stopsno0 any, 1 nonstop, 2 ≤1 stop, 3 ≤2 stops
sort_byno16 (top, price, dep, arr, duration, emissions)
include_airlines / exclude_airlinesnoComma-separated IATA codes (mutually exclusive)
hl / gl / currencynoStandard localization

Multi-city (type=3), max_price, max_duration, and bags are not yet supported and return 400 if passed.


google/hotels - Hotels Listings

curl -X POST "https://q.scrape.do/api/v1/jobs" \
  --header "X-Token: YOUR_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "Plugin": {
      "Key": "google/hotels",
      "Params": [
        { "q": "Bali hotels", "check_in_date": "2026-05-01", "check_out_date": "2026-05-03" },
        { "q": "Paris hotels", "check_in_date": "2026-05-01", "check_out_date": "2026-05-03", "hotel_class": "4,5", "free_cancellation": true, "currency": "EUR" }
      ]
    }
  }'
ParamRequiredDescription
qyesHotel search query (use simple "<City> hotels" form)
check_in_date / check_out_dateyesYYYY-MM-DD
sort_byno3 price, 8 rating, 13 reviewed
min_price / max_pricenoPrice filter (integer)
ratingno7 (3.5+), 8 (4.0+), 9 (4.5+)
hotel_classnoComma-separated star ratings 2–5
brands / amenities / property_typesnoComma-separated codes
free_cancellation / eco_certified / special_offersnoBoolean filters
next_page_tokennoPagination cursor
hl / gl / currencynoStandard localization

Occupancy parameters (adults, children, children ages) are not supported. Results always reflect 2 adults, 0 children.


google/news - News Articles

curl -X POST "https://q.scrape.do/api/v1/jobs" \
  --header "X-Token: YOUR_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "Plugin": {
      "Key": "google/news",
      "Params": [
        { "q": "openai", "so": "1" },
        { "topic_token": "CAAqJggKIiBDQkFTRWdvSUwy..." },
        { "kgmid": "/m/02_286" }
      ]
    }
  }'

Pass exactly one driver per task:

DriverFetches
qKeyword search
topic_tokenTopic stream
section_tokenSection within a topic
story_tokenFull-coverage story page
publication_tokenPublisher feed
kgmidKnowledge Graph entity (e.g., /m/02_286 = New York City)

Optional: so (0 relevance, 1 date; search mode only), hl, gl.


curl -X POST "https://q.scrape.do/api/v1/jobs" \
  --header "X-Token: YOUR_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "Plugin": {
      "Key": "google/trends",
      "Params": [
        { "q": "bitcoin", "geo": "US" },
        { "q": "ethereum", "geo": "US", "data_type": "RELATED_QUERIES" }
      ]
    }
  }'
ParamRequiredDescription
qyesSearch keyword
geonoLocation code (e.g., US, GB, US-CA)
hlnoLanguage code (default en)
datenoTime range (default today 12-m)
data_typenoWidget filter: TIMESERIES, GEO_MAP_0, RELATED_QUERIES, RELATED_TOPICS
catnoCategory ID
gpropnoGoogle property: web, images, news, youtube, froogle

GeoCode Behavior

GeoCode can be set at two levels:

LevelExampleApplies to
Top-level"GeoCode": "us"All tasks in the job
Per-param{ "geocode": "us", ... }That task only

Setting both returns 400. Top-level GeoCode only applies to Amazon, Walmart, and Lowes plugins. Google plugins use per-param gl or geo. Top-level GeoCode has no effect on them.


Webhooks

Plugin jobs support webhooks. Each completed task triggers a webhook delivery:

{
  "Plugin": { "Key": "amazon/pdp", "Params": [...] },
  "WebhookURL": "https://example.com/webhook",
  "WebhookHeaders": { "Authorization": "Bearer your-token" }
}

Error Codes

StatusMessageCause
400plugin key is requiredPlugin.Key is empty
400unsupported plugin key: <key>Unknown plugin key
400plugin params are requiredPlugin.Params is empty
400targets cannot be used together with pluginBoth Targets and Plugin provided
400geoCode must not be specified both at top level and in plugin paramsGeoCode conflict
400plugin params exceed limit of 1000 (got N)Too many param entries

On this page