Use cases · Price monitoring
Residential proxies for price monitoring
See the price a shopper in each country sees. Pick the country per request, check the exit before you trust the page, and pull Google Shopping offers as JSON. $1.00/GB.
Prices by country
Add _country-FR to the auth key and the request leaves from a home connection in France.
Proof of the country
Use a sticky session to check the exit country first, then load the product page from that same exit.
Shopping data as JSON
The Search API returns Google Shopping offers with title, price and merchant, for $0.0025 per search.
Check a product page from one country
A price is only useful if you know where it was seen. This Python example opens a sticky session in the target country. It checks the exit country first, then loads the product page through the same exit, and records both:
import os
import secrets
from urllib.parse import quote
import requests
USER = quote(os.environ["PACKETSTREAM_USER"], safe="")
AUTH_KEY = os.environ["PACKETSTREAM_AUTH_KEY"]
def check_price_page(url, country):
# A new label per check: these requests share one exit.
label = secrets.token_hex(6)
password = quote(f"{AUTH_KEY}_country-{country}_session-{label}", safe="")
proxy = f"https://{USER}:{password}@proxy.packetstream.io:31111"
proxies = {"http": proxy, "https": proxy}
exit_info = requests.get("https://ipinfo.io/json", proxies=proxies, timeout=30).json()
if exit_info.get("country") != country:
raise RuntimeError(f"wanted {country}, got {exit_info.get('country')}")
page = requests.get(url, proxies=proxies, timeout=30)
return {
"url": url,
"requested_country": country,
"observed_country": exit_info["country"],
"status": page.status_code,
"html": page.text,
}
for country in ("US", "DE", "FR"):
result = check_price_page("https://shop.example/product/123", country)
print(country, result["status"], len(result["html"]))
Use uppercase two-letter country codes. A code we don’t recognize is ignored, and the request can then leave from any country, which is why the example checks. To keep a valid list, pick the country in the Location menu on the dashboard’s Proxy Access page. See country targeting.
Pull Google Shopping offers instead
If you track products across many shops, Google Shopping may already have the data. One Search API call returns up to 100 offers:
curl -s https://api.packetstream.io/v1/search \
-H "Authorization: Bearer $PACKETSTREAM_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "noise cancelling headphones", "type": "shopping", "country": "de", "language": "de"}'
Each offer has a title, the price as Google shows it and the merchant in source. When available, it also has extracted_price, old_price, rating, reviews and delivery. Create the API key on the dashboard’s Search API page. See the Search API docs and the response fields.
| You need | Use |
|---|---|
| The price on a specific shop’s own page | Residential proxies |
| Offers from many shops for one product or query | Search API, type: shopping |
| Both | Both, from one prepaid balance |
Get the price right
- Store the country with the price. Keep the requested and observed country next to every price.
- Watch the page, not just the IP. Shops can also change the price by language, cookies, currency setting, delivery address or login. A country exit does not change those.
- Check before you alert. A price that drops to zero is usually a parsing error or an “out of stock” page. Check suspicious changes before you act on them.
- Go slow. Check each product only as often as you need, and follow each shop’s terms.
Our article Residential proxies for price monitoring covers product matching, normalizing and validation in more depth.
Honest limits
- Country only. You can’t target a city or region. Shops that price by postal code need that code in your request.
- Shops can still block you. Residential exits don’t guarantee access, and we don’t solve CAPTCHAs.
- Shopping results come from Google. They show what Google lists, which can lag behind the shop’s own page.
- You pay for all traffic. Error pages and retries count toward your GB.
Pricing
Pay for what you use.
$1.00 per GB
Same price in every country, for rotating and sticky traffic. Estimate your GB.
$2.50 per 1,000
$0.0025 per successful search. Failed searches are free.
One prepaid balance
$50 minimum, no subscription. Purchased balance does not expire.
Web scraping
Rotate the exit on every new connection, keep one exit for multi-step jobs, and estimate the cost before you scale.
Read moreSEO and SERP rank tracking
Track Google rankings by country, city and device as JSON, and check your own localized pages through residential proxies.
Read moreAd verification
Follow your tracking links and landing pages from each country, and check your Google text ads as JSON.
Read more