Website Screenshot & Content by Country (Geo)
Pricing
from $24.00 / 1,000 delivered pages
Website Screenshot & Content by Country (Geo)
Take a website screenshot and get the page content (Markdown, prices, redirects, language, hreflang) as it appears in any country you pick, through real home (residential) internet connections there. Geo-targeted, with proof of the country for every page. Pay only for pages delivered.
Pricing
from $24.00 / 1,000 delivered pages
Rating
0.0
(0)
Developer
Zaiq
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
12 days ago
Last modified
Categories
Share
Take a website screenshot and get the page's content as it appears in any country: the same URL seen from the US, the UK, Germany, India, South Africa or anywhere else you pick. Each 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 page and each country you choose, it returns:
- The HTTP status, the address the page finally landed on, and every redirect on the way (useful for checking country redirects).
- The page title, description, language,
og:locale, canonical URL, robots tag andhreflangalternates. - The page's main text as Markdown, ready for an AI model or a diff between countries.
- Prices the page states in its own product data (JSON-LD, microdata, product meta tags, Shopify).
- Optionally, the page loaded in a real browser (so text and prices added by JavaScript are included), a screenshot, and the full HTML.
- 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.
If no connection is available in a country, the row says so. It never quietly falls back to another country.
Who uses it
- Pricing and offers by market: subscription and software pricing pages, promotions, shipping and tax messages.
- Localisation and SEO checks: does
/redirect visitors in Germany to/de/? Does each market see the right language, canonical andhreflang? - Availability checks: which countries get a 200, a redirect, a 403 or a "not available in your region" page.
- AI agents and RAG: page text as it reads in a given market, not as it reads from a US data centre.
Example
One software company's plans page, rendered in a browser from five countries in one run on 2 October 2026. The same URL showed:
| Country asked | Came from (verified by ipinfo.io) | First monthly price on the page |
|---|---|---|
| US | Miami, WS Telecom | US$22.99 |
| GB | Southend-on-Sea, TalkTalk | £21.98 |
| DE | Newel, VSE NET | 25,99 € |
| IN | Hyderabad, Pioneer Elabs | ₹733.96 |
| ZA | Johannesburg, RSAWEB | R302,45 |
Input
{"urls": [{ "url": "https://www.example.com/pricing" }],"countries": ["us", "gb", "de"],"includeMarkdown": true,"includePrices": true,"renderJs": false,"screenshot": false}
countries: any two-letter country code. Each page is fetched once from each country.renderJs: load pages in a real browser. Use it for pages whose prices or text appear only after JavaScript runs.screenshot: save a screenshot from each country (turns on the browser).maxTriesPerPage: if a connection lands outside the country, fails, or meets a bot wall, a new one is tried, up to this many times. Failed tries are free.waitForSelector: with the browser on, a page counts as delivered only once this element appears (for example the price element). If it never appears, a new connection is tried, and if it still never appears the row is free. Use it whenever you need a particular part of the page, because some sites' widgets occasionally fail to load.extraWaitMs: with the browser on, pages are read once no request is in flight and the text has stopped changing for a second; this adds more waiting after that.
Output
One row per page and country. This is the Germany row from the example above, with the company's address and title replaced, the Markdown shortened and a few fields left out; the rest is as returned.
{"url": "https://www.example-software.com/plans","country": "DE","delivered": true,"status": 200,"finalUrl": "https://www.example-software.com/plans","redirects": [],"exit": {"country": "DE","city": "Newel","network": "AS9063 VSE NET GmbH","verified": true,"checkedWith": "ipinfo.io","checkedAt": "2026-10-02T11:09:02Z"},"title": "Plans and pricing","language": "en","canonicalUrl": "https://www.example-software.com/plans","hreflang": [],"prices": [],"markdown": "# Compare plans. ...","rendered": true,"blocked": false,"countryUnavailable": false,"error": null,"charged": true,"fetchedAt": "2026-10-02T11:09:23Z"}
prices is empty here because this page shows its prices as text, not as product data; they are in markdown. With
screenshot on, the row also has screenshotUrl; with saveHtml on, htmlUrl.
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~page-from-any-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/page-from-any-country").call(run_input={'urls': [{'url': 'https://www.apple.com/iphone/'}], 'countries': ['us', 'gb'], 'screenshot': True})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/page-from-any-country.
Pricing
You pay only for pages delivered from the requested country. Apify's platform usage is included.
| Event | Price |
|---|---|
| Page delivered (plain fetch) | $0.03 ($30 per 1,000) |
| Page rendered in a browser (JavaScript, optional screenshot) | $0.10 ($100 per 1,000) |
Plus Apify's standard run start fee of $0.00005.
Free: pages blocked by the site, pages that return an error (4xx or 5xx), countries where no connection could be
confirmed, pages where your waitForSelector element never appeared, 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.
Limits
- Some sites block automated visits even from home connections. Those rows come back as
blockedand cost nothing. - Countries with few home connections (or none) return
countryUnavailable. - Prices are read from the page's own product data. Pages that show prices only as text are covered by the Markdown,
not by
prices. - Use it on pages you are allowed to access, and follow each site's terms.
FAQ
How do I know the page really came from that country? The connection used for the page is checked first with two
IP-location services (ipinfo.io and ifconfig.co, with ipapi.co and country.is as fallbacks), and the result is in exit.
If the check fails or shows another country, a new connection is tried; if none works, the row says so and is free.
Why is a browser page more expensive? A browser downloads the page's scripts as well as the page, often ten times the data, through paid home connections.