Product Price Tracker & Comparison by Country
Pricing
from $24.00 / 1,000 product prices
Product Price Tracker & Comparison by Country
Track a product's price, currency and stock in every country you pick and compare them side by side in one currency. Fetched through real home (residential) internet connections in each country, with proof of location. Works on Shopify, WooCommerce and most stores. Pay only for prices found.
Pricing
from $24.00 / 1,000 product prices
Rating
0.0
(0)
Developer
Zaiq
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
Track what a product costs in each country you pick and compare the prices side by side: the price, currency and stock a shop shows to a visitor there, converted to one currency. Built for competitor price monitoring and regional pricing checks. Each product page is fetched through a real home internet connection in that country (residential, geo-targeted), and every result proves where the request actually came from.
What it does
For each product page and each country, it returns:
- The price, currency and stock status the shop shows in that country, read from the page's own product data (JSON-LD, microdata, product meta tags, or Shopify's product record).
- The same price converted to the currency you choose, at the day's reference rate (European Central Bank, with open.er-api.com for currencies the ECB does not quote).
- The address the page finally landed on and every redirect on the way, so you can see which country store a visitor is sent to.
- Proof of location: before the page is fetched, the same connection is checked with two IP-location services, and it counts only if both place it in the country. The row shows the country, city and network, which services confirmed it, and when.
- Optionally, a screenshot of the page from each country, as evidence.
When the run finishes, the key-value store record SUMMARY lists each product's prices side by side, with the cheapest
and dearest country and the spread between them.
Who uses it
- Brands and marketplaces checking that each market sees the intended price and currency.
- Pricing and competitor research: how a rival prices the same product in the US, UK, EU and elsewhere.
- Price-parity and grey-market checks: where a product is cheapest once converted, and where it is out of stock.
- Evidence: a screenshot and a location receipt for each country.
Example
A tech accessory brand's USB-C adapter, one product URL checked from five countries in one run on Apify (4 October 2026):
| Country asked | Came from (two services agree) | Store reached | Price shown | In USD | Stock |
|---|---|---|---|---|---|
| AU | Melbourne, Superloop | Australia | A$19 | $13.18 | In stock |
| CA | Courtenay, Shaw | Canada | C$19 | $13.34 | Out of stock |
| US | Dallas, T-Mobile | US | $15 | $15.00 | Out of stock |
| DE | Frankfurt, Deutsche Telekom | EU | €15 | $16.84 | In stock |
| GB | Caerphilly, BT | UK | £15 | $19.80 | In stock |
The same adapter costs 50% more in the UK than in Australia, and it is out of stock in the US and Canada while in stock elsewhere: two things a single-country price check would miss.
Input
{"products": [{ "url": "https://shop.example.com/products/some-product" }],"countries": ["us", "gb", "de", "au"],"convertTo": "USD","render": "auto","screenshot": false}
countries: any two-letter country code.convertTo: the currency every price is converted to for comparison.render:autouses a real browser only for pages whose price appears after JavaScript runs;neverkeeps to plain fetches (cheapest);alwaysloads every page in a browser.screenshot: a screenshot of each page from each country (always uses the browser).maxTriesPerPage: if a connection is not confirmed in the country, fails, or meets a bot wall, a new one is tried, up to this many times. Failed tries are free.
Output
One row per product and country. This is the UK row from the example above, with the shop's address replaced and a few fields left out (product name, SKU, other prices on the page); the rest is as returned.
{"url": "https://www.example-store.com/products/usb-c-adapter","country": "GB","priceFound": true,"price": 15.0,"currency": "GBP","convertedPrice": 19.8,"convertedCurrency": "USD","availability": "InStock","priceSource": "json-ld","variant": null,"priceNote": null,"status": 200,"finalUrl": "https://www.example-store.com/uk/products/usb-c-adapter","exit": {"country": "GB","city": "Caerphilly","network": "AS2856 British Telecommunications Limited","verified": true,"checkedWith": ["ipinfo.io", "ifconfig.co"]},"rendered": false,"blocked": false,"countryUnavailable": false,"error": null,"charged": true}
Use it from code, automations and AI agents
- API: run it and get the results in one call:
POST https://api.apify.com/v2/acts/zaiq~product-prices-by-country/run-sync-get-dataset-items?token=YOUR_TOKENwith the input as JSON. The API tab on this page has ready-made Python, JavaScript and cURL examples. - Python (
pip install apify-client):
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("zaiq/product-prices-by-country").call(run_input={'products': [{'url': 'https://www.ridgewallet.com/products/wallet-power-bank-keycase-kintsugi-navy-dark-harbor-kintsugi-navy'}], 'countries': ['us', 'gb']})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
- No code: connect it to Google Sheets, Zapier, Make or n8n from the Integrations tab, schedule runs in Apify Console, and get a webhook when a run finishes.
- AI agents (MCP): add it as a tool to Claude, Cursor or any MCP client through Apify's MCP server:
https://mcp.apify.com?tools=zaiq/product-prices-by-country.
Pricing
You pay only for prices found in the requested country. Apify's platform usage is included.
| Event | Price |
|---|---|
| Price found (plain fetch) | $0.03 ($30 per 1,000) |
| Price found with a browser (the page needed JavaScript, or you asked for a screenshot) | $0.10 ($100 per 1,000) |
Plus Apify's standard run start fee of $0.00005.
Free: pages with no price in their product data, pages blocked by the site, errors, countries where no connection
could be confirmed, and every retry. A row is charged only when its charged field is true. Your spending limit for
the run is respected: the run stops cleanly when it is reached.
In a test on 2 October 2026, 45 of 50 checks (10 shops, 5 countries) found a price with plain fetches. The other 5 were one shop whose pages carry no product data.
Checked against the store's own record
Shops' product data is sometimes wrong, and a price tracker that copies it passes the error on. On Shopify stores each price is checked against the store's own product record before it is reported:
- Wrong currency label. Some themes label every country's price with the shop's home currency, so a Canadian
C$110 is published as £110 (found on a large apparel store in 4 of 5 countries, 4 October 2026). The price is
reported in the currency the store actually served, and
priceNotesays what was corrected. - Amounts in cents. Some pages publish 36068 for €360.68. The amount is corrected and
priceNotesays so. - The same variant in every country. A product with sizes or colours is reported for the variant the page opens
on (the add-to-cart form, or
?variant=in your URL), named invariant, so countries are compared like for like. The other variants' prices are inotherPrices.
Limits
- Prices come from the page's own product data. Most shops publish it (Shopify, WooCommerce, BigCommerce, Magento and
many large retailers), but some show prices only as text; those rows come back with
priceFound: falseand are free. - A shop decides what each visitor sees using its own location lookup. Confirming the connection with two services makes a mismatch unlikely, not impossible.
- Some sites block automated visits even from home connections, or show a waiting page; those rows come back marked
blockedand are free. - Use it on pages you are allowed to access, and follow each site's terms.
FAQ
Why do some countries show the same currency? Many shops sell to some countries in their home currency or send them to an international store. That is what a visitor there sees, so that is what is reported.
How fresh are the exchange rates? They are fetched at the start of each run; SUMMARY names the date and source.