Google Search Shopping Scraper

One row per offer,
not per product.

Google Shopping answers a search with the same item priced by a dozen merchants. This service takes the query and hands back that comparison as eight columns - title, price, store, rating, reviews, link and thumbnail - with the store named on every row, which is the column that turns a list into a comparison.

one-time 500 free rowsthen $0.002 per roweight columns per offerCSV · JSON · Excel
How it works

A query in, a price comparison out.

  1. STEP 1Sign in to the platform.
  2. STEP 2Open the Google Search Shopping Scraper.
  3. STEP 3Enter the search terms you want priced, one per line - a query, not a URL.
  4. STEP 4Choose your output format (CSV / JSON / XLSX).
  5. STEP 5Run the job.
  6. STEP 6Download the results - one row per offer, eight columns.
Why this one is awkward

What makes it hard to fetch yourself.

An ordinary request does not even reach the results

Ask for https://www.google.com/search?tbm=shop&q=laptop with a plain HTTP client and a browser user-agent and you get HTTP 302 and 246 bytes - a redirect to ?q=laptop&udm=28. The Shopping vertical moved off the legacy tbm=shop parameter onto udm=28, so a scraper written against the old address now follows a redirect before it sees anything at all.

One row is one offer, not one product

store is a column rather than the row key, so the same item sold by five merchants arrives as five rows sharing a query. That is the shape you want for a comparison - group by title to collapse it, or leave it as it is and sort by price.

Eight columns, not the usual seventeen

Our catalogue scrapers - BiggestBook, Vistaprint, Waxie, Otto - all share a seventeen-column product schema. This one does not, and should not: a shopping result is an offer with a merchant attached, not a catalogue entry. Expect a different importer for this service than for those.

You give it words, not addresses

The first column is query and it holds the search terms you submitted. There is no product URL to paste - you describe what you want priced and the vertical decides which offers answer it, exactly as it would for a person typing the same thing.

Ranking is the search engine's, not ours

The order rows arrive in is the order the vertical returned them. It is influenced by things we cannot see - location, history, merchant standing - so treat position as a signal about the result set and not as a stable property of a product.

We say what we did not measure

The two runs behind this page both returned an empty payload - a header row and nothing under it. So we can tell you the eight columns with certainty and nothing at all about the values, and this page does not pretend otherwise.

What you get back

Eight columns, per offer.

Read from the header row of a real export of this service, in sheet order. The two runs we hold returned no data under that header - see the note below the table - so each entry says what the column is for, and stops there.

query
The search terms you submitted, repeated on every row so an export covering many searches stays separable. Keep it: with one row per offer rather than per product, this is the only thing tying a block of rows back to the question that produced them.
title
The product title as the shopping result states it. Expect the merchant's wording rather than a canonical name - the same item can appear under noticeably different titles from different stores, which is precisely what makes matching on title unreliable and store worth keeping.
price
The price shown on the offer. This is the column the whole service exists for; read it together with store, because a price without the merchant attached is not a comparison.
store
The merchant behind the offer. The field that distinguishes this schema from our catalogue scrapers, and the one to group or filter on when you are asking who sells a thing and for how much.
rating
The average rating attached to the offer, where the vertical shows one. Not every result carries a rating, so write the importer to accept an empty cell rather than failing on it.
reviews
The number of reviews behind that rating, with the same caveat. Where both are present they belong together - a score without the count behind it is not enough to rank offers against each other.
link
The destination for the offer. This is what you follow to reach the merchant, and the value to keep if you intend to verify a price by hand later.
thumbnail
The image shown beside the result. A thumbnail rather than full product photography - useful for a recognisable comparison table, not for artwork.

Eight columns per row · CSV, JSON or Excel

Behind this page are two runs, from 14 and 15 July 2026, whose JSON payloads are byte-identical and empty - the literal two characters [], with no rows at all. What is not empty is the spreadsheet each run produced: both carry the same eight-column header, and a header row is a real header row whether or not anything sits under it. So we can name the columns and their order with certainty, and we can tell you nothing whatsoever about Google Shopping's values - no prices, no merchants, no ratings, no example offers. None appear anywhere on this page. Note also that these eight columns are deliberately unlike the seventeen-column schema our catalogue scrapers share: a shopping result is an offer with a merchant attached, not a catalogue entry.

Common workflows

What an offer table is good for.

Price comparison

See who sells it and for how much

Submit the search a customer would type and keep store, price and link. One row per offer means the comparison is already in the shape of a table - sort by price and the answer is the top row, with the merchant named beside it.

Ecommerce · Pricing
Merchant discovery

Find out who else is listing your category

Group an export by store and count. Retailers appear in shopping results long before they appear on anyone's competitor list, and a query run on a schedule surfaces the ones that have started selling into your category.

Market research · Competitors
Price monitoring

Track a search rather than a product

Run the same query on a schedule and keep the run date. Because the row key is the offer, the series shows both movements in price and changes in who is offering at all - a merchant appearing or disappearing is often the more interesting signal.

Pricing · Monitoring
Assortment checks

Confirm your own listings show up

Search the terms you expect to rank for and look for your own name in store. If it is absent, that is a merchant-feed question rather than a pricing one, and it is much easier to see in a table than by scrolling a results page.

Ecommerce ops · Feeds
Pricing

Pay only for what you actually use.

Free tier

First 500 rows are free

One time, on signup. No card, and nothing to cancel afterwards.

One-time, on signup
Rate

then $0.002 per row

Billed on rows actually returned. With one row per offer, a broad query costs more than a narrow one - worth knowing before you schedule a thousand searches.

Billed on rows returned
No subscription

Nothing recurring

Credits do not expire on a monthly cycle. Run a price sweep in March and nothing until September if that is the shape of the work.

No monthly expiry
10% off your first paid run.Use code LIVESCRAPER10 at checkout.
Register
Pairs well with

The rest of the Google verticals.

The legal bit

Is it legal to scrape Google Shopping?

Prices and merchant names on a public results page are ordinary competitive information. The caveats worth naming are about what the results are, not about whether the facts can be read.

A price, a product title and the name of the shop selling it are facts about goods offered for sale. Reading them from a results page served to any visitor is the same activity a shopper performs by hand, at a useful speed. Nothing in the eight columns describes a person: no name, no email address, no phone number, no account - so the data-protection questions that shape our people-facing services do not arise here.

Two things are specific to a search vertical rather than a catalogue. First, results are personalised and provisional: what comes back depends on location, on time, and on signals we cannot see, so an export is a record of one query at one moment and not a statement about what a product costs. Treat a single run as a snapshot and a schedule of runs as the actual evidence. Second, the ranking and the assembly of those results are Google's work even though the underlying prices are the merchants' facts. Using an export internally to compare prices, find merchants or monitor a category is ordinary practice; republishing it as your own comparison service is a different question with a different answer.

Our own terms are the same as on every other service here. Publicly available pages only, nothing behind a login, no third-party trackers on the data layer, and exports auto-delete after 30 days. Your first 500 rows are free and need no credit card.

livescraper.app · what shapes a run
A search query per line, not a URL
One row per merchant offer
Results are personalised and provisional
Anonymous access only
Exports auto-delete after 30 days
A shopping result is a snapshot of one query at one moment. A schedule of runs is what turns it into evidence.
Common questions

What people ask before signing up.

What columns does the export contain?+
Eight, in this order: query, title, price, store, rating, reviews, link and thumbnail. One row per offer returned for the search you submitted.
Is there sample Google Shopping data on this page?+
No, and we will not invent any. Both runs behind this page returned an empty payload - the literal characters [] - so no offers came back at all. What the runs do establish is the eight-column header their spreadsheets carry, and that is the only thing this page claims from them. You will find no example prices, merchants or ratings anywhere here.
Do I submit a URL or a search term?+
A search term. The first column is query and it holds the words you submitted - you describe what you want priced, the same way a shopper would type it, and the vertical decides which offers answer it.
Why is one product several rows?+
Because the row is an offer, not a product. store is a column rather than the row key, so an item sold by five merchants arrives as five rows sharing one query. Group by title if you want it collapsed - but the uncollapsed form is what makes it a comparison.
Why can't I just fetch the shopping page myself?+
You can try, but the address moved. Requesting https://www.google.com/search?tbm=shop&q=laptop with an ordinary client returns HTTP 302 and 246 bytes, redirecting to ?q=laptop&udm=28 - the Shopping vertical is now behind udm=28 rather than the legacy tbm=shop. Anything written against the old parameter is following a redirect before it reads a single result.
Is this the same as the Google Shopping Reviews Scraper?+
No. That is a separate service covering product reviews from Google Shopping, with a different output. This one returns offers - title, price, store and the link to them.
Are the results the same for everyone?+
No. A shopping vertical personalises on location and other signals we cannot see, so an export records one query at one moment rather than a fixed truth about a product. That is why the useful pattern is a scheduled series rather than a single run.
How much does it cost?+
Your first 500 rows are free, one time, no card. After that it is $0.002 per row, billed on rows actually returned. Because one offer is one row, a broad query costs more than a narrow one.
What formats can I export?+
CSV, JSON or Excel. The eight columns and their order are the same in all three.

Get the comparison as a table.

Title, price, store, rating, reviews, link and thumbnail for every offer a search returns. Your first 500 rows are free, then $0.002 each.

Activates instantly · no card required

Scrape Google Shopping search results

Google Shopping answers a search with offers rather than pages: the same item, priced by a series of merchants, each with its own title, rating and link. That is a different thing from a product catalogue, and the export reflects it. Eight columns - query, title, price, store, rating, reviews, link and thumbnail - with one row per offer, so an item sold by five shops arrives as five rows sharing a query. The column that matters most is store: without the merchant named beside the price, a list of prices is not a comparison.

The practical obstacle is that the vertical's address has moved. Requesting https://www.google.com/search?tbm=shop&q=laptop with an ordinary HTTP client and a browser user-agent returns HTTP 302 and 246 bytes - a redirect to https://www.google.com/search?q=laptop&udm=28. The legacy tbm=shop parameter no longer serves the results directly; the Shopping vertical now sits behind udm=28. Anything written against the old form is chasing a redirect before it reads anything, and a parameter that changed once can change again, which is the ordinary argument for letting a service track it rather than maintaining the address yourself.

It is worth being clear about the input as well. This service takes a search query, not a product URL - the first column is query and it carries the words you submitted. You describe what you want priced the way a shopper would type it, and the vertical decides which offers answer that. It also means an export is a record of one query at one moment: shopping results are personalised on location and other signals nobody outside Google can see, so a single run is a snapshot and a scheduled series is what turns it into evidence.

We are deliberately plain about the limits of what we can show. The two runs behind this page, from 14 and 15 July 2026, both returned an empty payload - the literal two characters [], with no rows beneath the header. That establishes the schema, because a header row is a real header row whether or not anything sits under it, and it establishes nothing about Google Shopping's values. You will therefore find no sample prices, merchant names, ratings or offer counts anywhere on this page. Note also that these eight columns are unlike the seventeen-column schema our catalogue scrapers share, so plan on a separate importer. Publicly available pages only, no third-party trackers on the data layer, and exports auto-delete after 30 days. Your first 500 rows are free and need no credit card.