This changelog highlights releases that materially changed Google Shopping Scraper for users. Dates use UTC; small internal refactors and routine maintenance are intentionally omitted.
Fixes
- Price drop: the start fee is now $0.01 and a product costs $0.0034 on Free and Bronze, $0.00306 on Silver and $0.00272 on Gold and above.
- Results now stay in the country you asked for. Google answered about 1 in 4 requests for another country in our testing, which could put prices in reais or rupees into a US run. Requests now name the country, and any page in another country's currency is retried and never saved or charged.
sortBy works again. Google had stopped honoring the old sort parameters, so every sort order returned the same relevance order. A sorted search is now ordered across all its pages, so its rows appear in the dataset when that search finishes. review_score puts the highest rating first and products with no rating last.
minPrice and maxPrice are applied by Google, so a narrow range returns full results (40 of 40 in testing, up from 26) instead of trimming a general list.
- No more repeated rows across pages: each offer appears and is charged once. The same product from a different merchant now gets its own row.
imageUrl is filled again where Google gives an image link. Google embeds some images with no link, so part of the rows stay empty.
- A failed later page is retried instead of ending the search early.
- Searches can go past about 130 products: with relevance order, the scraper also reads price-sorted views of the same search, up to your
maxResults (300 of 300 in testing).
- A run restarted by a platform migration no longer pays the start fee twice.
- A run with no search query, or with an invalid country code, ends with a clear message and no charge. A run stops at your spending limit instead of writing rows beyond it.
Features
- New
onSale and freeShipping filters.
- New output fields:
originalPrice, originalPriceNumeric, discountPercent, catalogId, offerId, groupId. When Google shows the original price in another currency, originalPrice keeps its text and the number and discount stay empty.
- Every run ends with a status such as "Got 100 of 100 products" and says why it stopped short: Google confirmed no more products, or its next page could not be read, so more may exist.
Fixes
productUrl is filled again. It links to the product's Google Shopping page, which shows its details and seller offers, because Google no longer puts merchant links in search results. A direct merchant URL is still used when Google shows one. Listings without a Google catalog ID, often marketplace or resale offers, keep an empty productUrl instead of a link that could open a different product.
Reliability
- Runs with a short timeout no longer get killed mid-search. The scraper stops starting new pages, retries or searches that cannot finish in time and keeps the products already saved, with a status message that lists incomplete searches.
- If any search got no results before the timeout, the run now finishes as failed (saved products stay in the dataset), so API callers and integrations do not mistake missing results for a complete run. A run that only skipped later result pages still finishes successfully.
- Browser fallback now counts browser startup, page loads and shutdown against the run timeout, so a slow start, a hanging page or a slow browser shutdown can no longer push the run past its deadline.
- Products found by the browser fallback just before the timeout are saved first and then charged for exactly the saved rows, so a run stopped at its deadline never charges for products it did not save and never saves new results after the deadline.
- Every saved product is now charged exactly once, and charging finishes before the run ends. If a charge request fails or gets no answer, it is resent only while the platform still recognizes it as the same charge, so a resend can never charge twice. If billing still can't be confirmed, the run ends as failed with a clear message; your saved results are not affected.
Reliability
- Portuguese and Polish searches that Google explicitly reports as having no Shopping matches now finish quickly instead of retrying and falling back to a browser, which could exhaust short run timeouts.
Reliability
- Avoid unnecessary retries and browser fallback when Google explicitly reports no Shopping matches. Blocked or unrecognized responses still use the existing recovery routes.
Fixes
- Corrected localized currency codes and numeric price parsing, including Brazilian real and comma-decimal prices.
Changes
- Packaged market research workflow guidance in the Actor README for price and merchant analysis use cases.
Features
- Added public Store task examples so users can start common Google Shopping scraping workflows faster.
- Refreshed Store copy for ecommerce price-monitoring use cases.
Changes
- Improved input form labels, examples, and help text to make setup clearer.
Changes
- Product URLs no longer fall back to Google Shopping search links when direct merchant URLs are exposed by Google.
Reliability
- Restored Google Shopping extraction with updated selectors and Google SERP proxy handling.
- Fixed product image URL extraction and aligned pricing/architecture documentation.
Reliability
- Added per-attempt timeouts and improved browser cleanup to reduce hung runs.
- Updated product-scraped pricing for the current cost model.
Reliability
- Improved proxy rotation behavior when Google Shopping shows CAPTCHA or blocking responses.
Features
- Initial release for comparing Google Shopping product prices across merchants, including titles, prices, numeric prices, merchants, ratings, delivery details, product URLs, and country/language targeting.