# 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.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.
of requests succeed
median response
95% finish faster
per 1k product cards at volume
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 GET Request. That's the whole integration.
Start with just a query. Add more parameters when your use case needs them.
Google Immersive Product API
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 TokenmoreStores Fetch More StoresnextPageToken Stores Next Page TokenAdd 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.
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
| Retailer / listed item | Price | Shipping | Total |
|---|---|---|---|
| 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.
Enrich product records with specifications
Add product descriptions, brands and specifications to your catalog enrichment or ecommerce search workflows.
- Folgers Coffee Ground Classic Roast
| Attribute | Value |
|---|---|
| Form Type | Ground |
| Roast Type | Medium |
| Aroma | Fresh 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 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
| Variant group | Option | Google status |
|---|---|---|
| Roast | Classic | Available option |
| Roast | Classic Decaf | Available option |
| Size | 25.9 oz | Available option |
| Size | 33.7 oz | Available 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.
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 headline | Rating | Source |
|---|---|---|
| Something seems off | 1 | folgerscoffee.com |
| The best part of waking up! | 5 | walmart.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.
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
| Video | Source | Duration |
|---|---|---|
| Watch Folgers Classic Roast Medium Ground Coffee Reviewed on ... | Amazon.com | 1:07 |
| Watch What no one tells you before buying Folgers Classic Coffee ... | Amazon.com | 1: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.
Product details and seller offers, one schema
Compare seller totals, inspect product variants, and explore reviews. Available fields depend on the product.
productResults
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"
}title stringProduct title
brand stringProduct brand
rating numberAggregate product rating
reviews numberProduct review count
priceRange stringDisplayed price range across offers
stores
Seller offers returned for the product. More offers may require pagination; check variant and pack size before comparing prices.
[
{
"name": "Walmart",
"tag": "Most popular",
"link": "https://www.walmart.com/ip/AirPods-Pro-3/17835001",
"price": "$210.00",
"extractedPrice": 210,
"originalPrice": "$249.00",
"extractedOriginalPrice": 249,
"discount": "15% off",
"rating": 4.3,
"reviews": 3671,
"paymentMethods": "PayPal, Affirm accepted",
"detailsAndOffers": ["Free delivery by Thu"]
}
]name / tag stringSeller name and a badge like Most popular
price / extractedPrice string / numberCurrent price, display and numeric
originalPrice / discount stringStruck-through price and discount label
rating / reviews numberSeller rating and review count
paymentMethods stringAccepted payment options
detailsAndOffers string[]Delivery and offer lines for this seller
userReviews
[
{
"text": "Take it from me, these things are awesome. Great sound and the fit is perfect...",
"userName": "BenW4",
"source": "pbtech.co.nz",
"rating": 5,
"date": "4 weeks ago"
}
]text stringThe review body
userName / source stringReviewer and the site the review came from
rating numberStar rating this reviewer gave
date stringWhen the review was posted
aboutTheProduct
The product description and its spec table as key-value pairs.
{
"description": "Enjoy superior sound and an even more personalized audio experience with Active Noise Cancellation...",
"features": [
{ "title": "Brand", "value": "Apple" },
{ "title": "Model", "value": "AirPods Pro 3" },
{ "title": "Noise Control", "value": "Active Noise Cancellation" }
]
}description stringManufacturer product description
features[] object[]Spec table entries
features[].title / value stringEach spec name and its value
topInsights
Google's aggregated review insights, grouped by aspect, with pros and cons per source.
{
"title": "Sound Quality (Bass, Treble)",
"items": [
{
"title": "TLDR Reviews",
"source": "ShopSavvy",
"link": "https://shopsavvy.com/reviews-tldr",
"pros": ["Rich, punchy bass", "Clear highs"],
"cons": ["A touch bass-heavy for some"]
}
]
}title stringThe aspect, e.g. Sound Quality or Battery
items[] object[]Sources that discuss the aspect
items[].source / link stringReview source and its URL
items[].pros / cons string[]Pros and cons pulled from that source
videos
Review and unboxing videos Google surfaces for the product.
[
{
"title": "AirPods Pro 3 Review - 6 Months Later",
"link": "https://www.youtube.com/watch?v=JeIKquUHjs0",
"source": "YouTube",
"channel": "6 Months Later",
"duration": "12:18",
"thumbnail": "https://i.ytimg.com/vi/JeIKquUHjs0/mqdefault.jpg"
}
]title stringVideo title
link / source stringVideo URL and platform
channel stringUploading channel
duration stringVideo length
thumbnail stringPoster image URL
variants
Found under productResults.variants.
[
{
"title": "Roast",
"items": [
{
"name": "Any Roast",
"available": true,
"selected": true
},
{
"name": "Classic",
"available": true
}
]
}
]title stringVariant group, such as roast or size
items[].name stringOption label
items[].available booleanWhether Google marks the option as available
items[].selected booleanSelected option, when this field is present
Shipping and seller pagination
These fields sit inside productResults.
{
"storesNextPageToken": "Mw==",
"stores": [
{
"name": "Sam's Club",
"shipping": "+ $10.33",
"shippingExtracted": 10.33,
"total": "$30.00",
"extractedTotal": 30
}
]
}storesNextPageToken stringToken for additional seller offers
stores[].name stringSeller associated with these charges
stores[].shipping stringDisplayed shipping charge
stores[].shippingExtracted numberNumeric shipping charge
stores[].total stringDisplayed offer total
stores[].extractedTotal numberNumeric offer total
An all-in-one scraping service
Every feature you need to collect data from thousands to millions of requests.
Discover similar
scrapers and APIs
to expand your projects.
Google Shopping Results API
Product Data • $0.83 / 1k Request
Google SERP API
Live SERP Data • $0.83 / 1k Request
Fits right into your stack.
Works with the tools you already use.
View Documentation ->Teams that deleted their scraper
Now it's the part of the pipeline they don't think about
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.
We rely on HasData for search performance data and broader scraping needs. Their APIs deliver highly structured data that integrates directly into our platforms.
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.
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.
We were particularly impressed with how easily we could integrate HasData into our existing workflow.
Plans that get cheaper at scale
Fixed price, fixed volume, no surprises at the end of the month. Upgrade when you need more.
Free
Startup
Basic
RecommendedGrowth
Monthly product card volume
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. Past 20M credits a month, or need terms the self-serve plans do not cover? We shape the contract, concurrency, and support around your workload.
HasData accesses publicly available data only. Google's terms may restrict automated access; you are responsible for compliance. Where data includes personal information, ensure a lawful basis under GDPR/CCPA.
Questions, answered
Use an immersiveProductPageToken from a supported Google Shopping or SERP product result as pageToken. Tokens are available when Google exposes the detailed product view; a product ID alone is not a replacement.
Google's Content API is for merchants managing their own catalog. This API reads public Google Shopping product details and available seller offers for price monitoring and market research.
Yes. productResults.stores contains seller offers with available prices, shipping and ratings. More offers can be requested with moreStores or seller pagination. Confirm pack sizes and variants before comparing offers; the response is not a complete inventory of every seller.
It retrieves the product details and available seller offers, specifications, reviews and videos. Median response is around 4 seconds. Independent lookups can run concurrently within your plan's limits.
Per successful request. One request is one product card and returns the full page. A failed request costs nothing.
Yes. The free plan renews 1,000 credits every month, which is 200 product cards with every field included. No credit card required. When you outgrow it, pick a plan that fits your volume.
One product card costs 5 credits. The unit price drops with volume, from about $1.23 down to $0.37 per 1,000 cards. Need more than the top plan covers? We'll set a custom rate.
No. Requests run on HasData's infrastructure, so there's nothing to provision or maintain. You're responsible for using the results in line with each target site's terms and applicable law.
Your first product card
is minutes away
200 product cards free · no credit card