HasData
Scraper API

Google Immersive Product API

with multi-seller prices and reviews

Get seller offers, specifications and reviews from Google Shopping product pages as clean JSON. Compare products without maintaining store-by-store scrapers.

SUCCESS
99.9%

of requests succeed

P50
4.0s

median response

P95
6.1s

95% finish faster

PRICE
$0.42

per 1k product cards at volume

Stop maintaining scrapers

Google's product page is a maze. Your parser shouldn't care.

  • Seller offers spread across the page
  • Prices, discounts, and shipping in mixed shapes
  • Reviews and specs behind expanders
  • Tokens tying a product to its page
  • Re-parse the layout after each redesign
One integration commit replaces a backlog you’ll never finish.
scraper | git log
hotfix: markup changed, nulls in price
fix: only caught 3 of 9 sellers
fix: discount parsed into current price
chore: rotate proxies for product runs again
fix: page token expired before the call
hotfix: specs table shape changed again
fix: user reviews truncated mid-text
chore: refresh residential IPs by region
fix: original price missing on sale items
fix: retry storm on rate limits
hotfix: markup changed, nulls in price
fix: only caught 3 of 9 sellers
fix: discount parsed into current price
chore: rotate proxies for product runs again
fix: page token expired before the call
hotfix: specs table shape changed again
fix: user reviews truncated mid-text
chore: refresh residential IPs by region
fix: original price missing on sale items
fix: retry storm on rate limits
hotfix: markup changed, nulls in price
fix: only caught 3 of 9 sellers
fix: discount parsed into current price
chore: rotate proxies for product runs again
fix: page token expired before the call
hotfix: specs table shape changed again
fix: user reviews truncated mid-text
chore: refresh residential IPs by region
fix: original price missing on sale items
fix: retry storm on rate limits
hotfix: markup changed, nulls in price
fix: only caught 3 of 9 sellers
fix: discount parsed into current price
chore: rotate proxies for product runs again
fix: page token expired before the call
hotfix: specs table shape changed again
fix: user reviews truncated mid-text
chore: refresh residential IPs by region
fix: original price missing on sale items
fix: retry storm on rate limits
feat: integrate HasData API
Code Examples

One GET Request. That's the whole integration.

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

request example
curl -G 'https://api.hasdata.com/scrape/google/immersive-product' \
	--data-urlencode 'pageToken=eyJyZHMiOiJQQ18zMjQ1NDc2NDAwODMzNTUxOTQ4fFBST0RfUENfMzI0NTQ3NjQwMDgzMzU1MTk0OCIsInByb2R1Y3RpZCI6IjE2NTYxODg2MzMwNjI5NzA1MjY5IiwiY2F0YWxvZ2lkIjoiMTA5MDU3MjEzODE1NDM1NDgwMCIsImhlYWRsaW5lT2ZmZXJEb2NpZCI6IjEwNTQwMDUxMzg0NjEzOTczOTg1IiwiaW1hZ2VEb2NpZCI6IjE3MjMwMzM3NDkwMTYzODIyNjMiLCJncGNpZCI6IjgyOTk1MTI3NTExOTg2NzE2MjIiLCJtaWQiOiI1NzY0NjI2MTIyODAxMzA0ODEiLCJxIjoiYnV5IGNvZmZlZSIsImhsIjoiZW4iLCJnbCI6InVzIiwiY29va2llcyI6Il9fU2VjdXJlLVNUUlA9QU5tWndhMHZsZUx5TFN3SDZKcmFHRU15RGxnbEhJN3NJelN2NFVJcXhZUDhFQk5kd1FXNTRoRHVsX3RZRl9hSFBsQjM3ajhNMWZRY1NwOVhTMy1icmVOdzIwa1RybjhnajhCaDsgQUVDPUFkSlZFYXR5TE1ZbHktUk5IRGxTVm04MGkySWRhWm4yeE5mWlVBX3JzV3pDX0xyTFFTeUwzTGJ3TkJnOyBOSUQ9NTMyPWtadG5CQnpoNE02cU5lTW9VM1Rjekd1d0VKdmtkcjBZMzFFbmNPTlZUT084TmlVX0oyUTVucmR3Q0dWUU5pWVlvWUROSEdWTE9BdUd0SWI2ZjEwSDk3OHM3bk9hajFFTVN1ellIaDVTMzdDTkJDZkdwLWlmcThVenV4aHR3TTR0YmNidXdnbVBNUHJHeXBlMS1aQmZtTEVCOXpTam9aMFpGOUZHQ3ZQdkc3aGdXZzRCcndvb1RYclhnTHdhc3BtYXpUVi1YYUg1bzJjV2lUNTUwc0dHNG5pRVpYLUI1aFZsbllYQ1QxZU91LXU0Tjk4MXQtUnYzYi1RZS1nTGV2NmV4ZGNFdlE7IERWPU02U2J0ZDljdGtvc1VKSEhKMHhOMXZfa3lxX0M5Tm42MHAxSjhPd3dCd1FBQUFBIiwieHNyZiI6IkFGNXRTTzRGb3VnZDItOVJPN09YU29oMzlvWnhLUzZGNVE6MTc4MzY4OTMxMzM5MiIsIm9hcHZmYyI6IkVvc0RDc3dDUVVwcFZEUjBTMGMwTmxObk16TktTRmxmYW05SlpUbFNNM1ZaVTFJeWJ6ZENlRGgwWm5kRVNGWTFja2hzZFVZNVMzWnVOMVUxYkVSSU1YTlVSMUpyV1VwWFpVWlNUVVY0Y2s5ak1EaElYMWd3UVRaR1RVbzJTVmxpZVdGdU5IRklVV1o0WTJ4d1RVUm1hRFZPT1dSbGFXOVZaVFpNT1ZaT1VXZHJNMlJTTlZNMlQzWlhiSEI1UW01aU5DMHlUR0psYnpWTVJEVkhSazVoYlZkZlVFUmxlbkIwTlc1U2FtRjJOVUprVWkxTloxcFJhbHBsY21kc1VXbDNXVWcxY1dKeFdtTjZWR0ZEVDB0a2RISldTekYwYzB0MVlqaHBiR1o2TFc1cFZsODNjV296VTI5RVgydDVkSE13WlVNNVJVaGhhRTU0WHpKT2ExY3plR3BXY1VGMlJXVjBhVmN5T1ZkNk9WaEVialV5VldVNGNtdHlPVUV4Ym1ZdFNYRjRkM1J3VUMxdFNYUjZORUk0Y3pCV1REUlhkbTVHUldodE1ETnVaaTFNTFZSUlRuUm9PVmRDWDNoaVoyNXVkVWtTRmxsUVFsRmhjV1ZrVFZCWGRIRjBjMUEwV1U5elRWRWFJa0ZFYzNJNVpsRjZSMVpNTkZKR2IwRmhZbmhQWmpSRFRqbHBNRTVCWjAxcFowRSIsInZlcnNpb24iOjJ9' \
	--header 'x-api-key: <YOUR_API_KEY>' \
	--header 'Content-Type: application/json'
pageToken * Page Token
Token for displaying more product info in the Google immersive pop-up, available in the Google Shopping API response as the `immersiveProductPageToken` property.
moreStores Fetch More Stores
Fetch additional store results in a single search. By default it returns 3–5 stores, and when true it returns up to 13 or the maximum available for the product.
nextPageToken Stores Next Page Token
Token used to retrieve the next page of store results.
TRY ALL 3 PARAMETERS FREE
AI Integration

Add Google Immersive Product API with your AI agent

Paste a ready-to-use integration prompt into your coding agent. It includes API references, setup requirements, and testing instructions.

google-immersive-product-integration.md
# Integrate HasData Google Immersive Product API

## Task

Add the requested detailed product, retailer offer, variant or review research workflow using HasData Google Immersive Product API.
Inspect project instructions, the server-side runtime, existing HTTP client, and tests first.
Follow the project's conventions and preserve unrelated code. No new SDK is required.
Implement only the requested workflow. If it is unclear, ask which product and workflow are needed and whether a current immersive product token is already available.
Keep the integration as REST API calls; do not replace it with an MCP connection or a custom Google scraper.

## References

Read the endpoint documentation before implementing:

- Product details, seller expansion and pagination: https://docs.hasdata.com/apis/google-serp/immersive-product.md
- Product search and token source: https://docs.hasdata.com/apis/google-serp/shopping.md
- Error handling: https://docs.hasdata.com/api-codes.md
- Documentation index: https://docs.hasdata.com/llms.txt
- Full documentation (fallback): https://docs.hasdata.com/llms-full.txt

Start with the endpoint reference. Use `llms.txt` to find additional pages.
Use `llms-full.txt` only when needed; extract relevant sections instead of loading everything into context.
If a `.md` reference is unavailable, try its HTML URL without `.md`.
If it is still unavailable, ask for the missing documentation rather than guessing.

## Optional agent skill

If the official `hasdata` skill is already available, use its relevant guidance.
Otherwise, if this agent supports skills, ask before installing it in this project:

```sh
npx skills add hasdata/agent-skills --skill hasdata
```

Run from the project directory and select the coding agent in use.
The `hasdata-cli` skill is not required. If installation is declined or unsupported, continue with the docs.
Flag conflicts between skill guidance and current API docs rather than guessing.


## Implementation

- Use `GET https://api.hasdata.com/scrape/google/immersive-product` with required `pageToken`. Accept the exact `immersiveProductPageToken` returned by a supported product result; a product ID or merchant URL is not a substitute.
- If no valid token is available, explain that a Google Shopping search is a separate request. Obtain a current token only within the agreed workflow and request budget. Do not copy an abbreviated documentation token or assume an old token stays valid.
- Keep opaque tokens unchanged and preserve large product identifiers as strings. Use the existing HTTP client to encode parameters; do not decode or construct product tokens.
- Read `productResults`, with nested `stores`, `aboutTheProduct`, `userReviews`, `variants`, `topInsights` and `videos` when present. Optional sections may be absent. `topInsights` is an array in the current response, not a single object.
- By default, only a selection of seller offers is returned. Use documented `moreStores` only when requested. For requested seller pagination, pass `productResults.storesNextPageToken` as `nextPageToken` while retaining the same product token. Stop on missing or repeated tokens; do not promise every seller.
- Read offer `price`, `extractedPrice`, `shipping`, `shippingExtracted`, `total` and `extractedTotal` only when present. Missing shipping is unknown, not automatically zero. Google-displayed totals are not guaranteed final checkout costs.
- Validate seller offer title, pack size, quantity, condition and currency before price comparison. A Google product group can contain different sizes or packs. Product matching, unit-price normalization, historical tracking and alerts belong to the application.
- Preserve variant groups and options. `available` describes an option exposed by Google, not verified retailer inventory. Use a returned variant `immersiveProductPageToken` for a separate lookup only when requested; do not assume every combination exists.
- Keep aggregate product ratings distinct from seller ratings and individual review ratings. Retain source and original review text; complete review history is not guaranteed. Sentiment, topic extraction and summaries belong to the application.
- Treat specifications and Google’s existing review insights as extracted source material, not independently verified claims or newly generated HasData analysis. Video records contain metadata and links, not transcripts or content reuse rights.
- Validate any returned API link against the exact `https://api.hasdata.com` origin and intended path before sending the key. Merchant, Google, image and video URLs must never receive API credentials.
- Handle timeouts and documented errors before reading data. Keep requests server-side. If no suitable runtime exists, discuss options before changing the architecture.

## Credentials

- Implement the integration and mocked tests without requiring a live API key.
- Read `HASDATA_API_KEY` from the project's existing environment or secret store and send it as `x-api-key`.
- If the key is missing before live verification, ask the user to configure it from https://app.hasdata.com/api-keys.
- Never ask the user to paste the key into chat. Check only that it is configured, without printing its value.
- Never put the key in browser code, logs, or version control. Add only a placeholder to the project's example configuration.
- If using a local `.env` file, make sure it is gitignored.
- Send the key only to `https://api.hasdata.com`. Never forward it to documentation, Google, retailer links, media links, or redirects to another origin.


## Verification

- Add mocked tests for missing and malformed tokens, unchanged token encoding, optional product sections, seller pagination limits, repeated tokens, missing shipping, mixed pack sizes and currencies, variant context, distinct rating scopes, source links, empty results and errors. Include a usage example and run local checks.
- With a configured key and explicit user approval, including approval already given for this task, make one live verification request with agreed inputs. A successful Google Immersive Product API request consumes 5 credits.
- Use an agreed current token. If obtaining one needs a Shopping search, request approval for that extra request or use approval already given; it adds 10 credits when successful. Do not automatically fetch additional sellers or variants.
- Validate the HTTP status, documented API status, and response structure. An empty result set can be valid.
- Do not automatically repeat paid requests to obtain a nonempty response.
- Report changed files, setup commands, and test results. State separately whether live verification passed, failed, or was skipped.
- Ask before deploying.

Use Cases

Build with Google Immersive Product API

Build seller comparisons, catalog enrichment and product research tools from detailed Google Shopping product data.

Compare seller prices and shipping

Build comparison tools from retailer offers, shipping charges and displayed totals for a selected Google Shopping product.

  • Folgers Coffee Ground Classic Roast
Offer details from one product lookup Offers to compare
Offer details from one product lookup — Offers to compare
Retailer / listed itemPriceShippingTotal
Dean Supply — Folgers 25.9 Oz Medium Classic Roast Coffee Can, Each$27.27+ $11.02$38.29
Buried Stone Farms market — Folgers Classic Roast Coffee p$12.82+ $75.00$87.82
API data
productResults.stores[].nameproductResults.stores[].titleproductResults.stores[].extractedPriceproductResults.stores[].shippingExtractedproductResults.stores[].extractedTotal
Your app
Check offer titles, pack sizes, currency and conditions before ranking sellers. Retain missing charges as unknown rather than assuming free delivery.
Explore response fields

These offers are not confirmed identical packs. Totals are displayed by Google, not guaranteed final checkout prices; more sellers may require pagination.

Enrich product records with specifications

Add product descriptions, brands and specifications to your catalog enrichment or ecommerce search workflows.

  • Folgers Coffee Ground Classic Roast
Specification values from the product page Catalog attributes
Specification values from the product page — Catalog attributes
AttributeValue
Form TypeGround
Roast TypeMedium
AromaFresh aroma
API data
productResults.brandproductResults.aboutTheProduct.features[].titleproductResults.aboutTheProduct.features[].value
Your app
Map returned attributes to your catalog schema and validate product identity before merging records. Keep provenance and flag conflicting specifications.
Explore response fields

These are extracted product attributes, not verified manufacturer claims. Attribute names and completeness vary by product.

Explore product sizes and options

Show product variants in shopping research tools and keep size or model context when comparing retailer offers.

  • Folgers Coffee Ground Classic Roast
Options returned for this product Variant choices
Options returned for this product — Variant choices
Variant groupOptionGoogle status
RoastClassicAvailable option
RoastClassic DecafAvailable option
Size25.9 ozAvailable option
Size33.7 ozAvailable option
API data
productResults.variants[].titleproductResults.variants[].items[].nameproductResults.variants[].items[].availableproductResults.variants[].items[].immersiveProductPageToken
Your app
Present the returned variant groups and use a selected option’s token for a separate lookup when more detail is needed.
Explore response fields

Available means Google exposes the variant option, not that every retailer has stock. Not every size-and-roast combination is guaranteed.

Find themes in product feedback

Use review text and ratings as inputs for customer feedback research, product comparisons and your own sentiment analysis.

  • Folgers Coffee Ground Classic Roast
Review headlines with source and rating Feedback research inputs
Review headlines with source and rating — Feedback research inputs
Review headlineRatingSource
Something seems off1folgerscoffee.com
The best part of waking up!5walmart.com
API data
productResults.userReviews[].titleproductResults.userReviews[].textproductResults.userReviews[].ratingproductResults.userReviews[].source
Your app
Group feedback by topic in your own analysis, retain review sources and inspect ambiguous opinions before summarizing product strengths or complaints.
Explore response fields

Reviews are a returned selection, not the full review history. Topic labels and sentiment scores are produced by your application.

Find videos for product research

Collect product review and demonstration videos to support buying guides, comparison research and richer product discovery experiences.

  • Folgers Coffee Ground Classic Roast
Videos surfaced for the selected product Product video sources
Videos surfaced for the selected product — Product video sources
VideoSourceDuration
Watch Folgers Classic Roast Medium Ground Coffee Reviewed on ...Amazon.com1:07
Watch What no one tells you before buying Folgers Classic Coffee ...Amazon.com1:46
API data
productResults.videos[].titleproductResults.videos[].linkproductResults.videos[].sourceproductResults.videos[].duration
Your app
Organize returned video links alongside product records and review source relevance before citing or embedding any content.
Explore response fields

The API returns video metadata and links, not transcripts or reuse rights. Linking, embedding and analysis are application decisions.

Response

Product details and seller offers, one schema

Compare seller totals, inspect product variants, and explore reviews. Available fields depend on the product.

productResults.json

Product overview. Seller offers, specifications, and reviews have their own tabs.

{
  "title": "Folgers Coffee Ground Classic Roast",
  "brand": "Folgers",
  "rating": 4.6,
  "reviews": 5067,
  "priceRange": "$15-$76"
}
Fields in productResults
title string

Product title

brand string

Product brand

rating number

Aggregate product rating

reviews number

Product review count

priceRange string

Displayed price range across offers

What We Offer

An all-in-one scraping service

Every feature you need to collect data from thousands to millions of requests.

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
Free forever
200 product cards / month
1,000 credits / month
1 concurrent request
Structured JSON, no parsers to maintain
Only successful requests billed
Team seats
Community support
Start free
Startup
$49 /mo
$1.23 / 1k product cards
40K product cards / month
200K credits / month
5 concurrent requests
Structured JSON, no parsers to maintain
Only successful requests billed
Team seats
Email support
Get started
Basic
Recommended
$99 /mo
$0.50 / 1k product cards
200K product cards / month
1M credits / month
15 concurrent requests
Structured JSON, no parsers to maintain
Only successful requests billed
Team seats
Priority email support
Get started
Growth
$208 /mo
$0.35 / 1k product cards
3M credits / month
50 concurrent requests
Structured JSON, no parsers to maintain
Only successful requests billed
Team seats
Dedicated account manager
Get started
Monthly product card volume
Free 200K 1M 4M
Best fit
Basic
product cards / mo
200K
Concurrency
15
$ / 1k product cards
$0.50
$99 /mo
Get Started
Enterprise
Custom price based on required volume

Past 20M 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.
Security review
Security questionnaire, DPA, and controls overview.
Talk to sales Quote within one business day
FAQ

Questions, answered

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

Your first product card
is minutes away

200 product cards free · no credit card