Countries Data Scraper - Population, Languages & Currencies
Pricing
from $6.80 / 1,000 results
Countries Data Scraper - Population, Languages & Currencies
Scrape reference data for the world's countries: population, capital, region, subregion, area, languages, currencies, coordinates, timezones, calling code and flag. Export to JSON, CSV or Excel.
Pricing
from $6.80 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 hours ago
Last modified
Categories
Share
Countries Data Scraper - Population, Languages & Currencies
Here is one real result, with every field the actor returns. The translations object is trimmed to 5 of its 19 real entries for readability:
{"name": "India","officialName": "Republic of India","nativeName": "भारत","cca2": "IN","cca3": "IND","capital": ["New Delhi"],"region": "Asia","subregion": "Southern Asia","population": 1417492000,"area": 3287590,"languages": ["English", "Hindi", "Tamil"],"currencies": ["INR"],"currencyName": "Indian rupee","currencySymbol": "₹","latlng": [20, 77],"timezones": ["Asia/Kolkata"],"callingCode": "+91","tld": ".in","flagEmoji": "🇮🇳","flagUrl": "https://flagcdn.com/w320/in.png","numericCode": "356","nationality": "Indian","demonym": "Indian","gdp": 4187017,"borders": ["BGD", "BTN", "MMR", "CHN", "NPL", "PAK"],"independent": true,"unMember": true,"landlocked": false,"ciocCode": "IND","callingCodes": ["+91"],"altSpellings": ["IN", "Bhārat", "Republic of India", "Bharat Ganrajya", "இந்தியா"],"postalCodeFormat": "######","postalCodeRegex": "^(\\d{6})$","timezoneDetails": [{"zoneName": "Asia/Kolkata", "gmtOffset": 19800, "gmtOffsetName": "UTC+05:30", "abbreviation": "IST", "tzName": "Indian Standard Time"}],"translations": {"de": "Indien", "es": "India", "fr": "Inde", "ja": "インド", "zh-CN": "印度"},"wikiDataId": "Q668","flagUnicode": "U+1F1EE U+1F1F3","googleMapsUrl": "https://www.google.com/maps/@20,77,6z","openStreetMapUrl": "https://www.openstreetmap.org/#map=6/20/77","source": "Country data","observedAt": "2026-08-10T14:19:12.094Z"}
The most complete countries data scraper available. It returns every reference field for each of the world's ~250 countries, from population, capital, region, area, languages and currencies to coordinates, timezones (with detailed offsets), calling codes, TLD, borders, GDP, postal-code format, flag assets, map links and localized name translations, in one clean record per country.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor collects reference data for the world's countries, applies the optional search filter you pass, and writes one normalized record per country to the run's dataset. Each record carries names (common, official, native), ISO codes (cca2, cca3, numeric, CIOC), capital, region and subregion, population, area and GDP, languages, currencies (with name and symbol), coordinates, timezones (with detailed GMT offsets), calling codes, TLD, borders, postal-code format and regex, flag emoji and image, map links, and localized name translations. Missing source values are returned as null.
Quickstart
Open the actor, paste this into the input, and press Run. It returns 10 countries.
{"maxCountries": 10,"searchQuery": ""}
Set searchQuery to a country name, region, subregion or ISO code (for example france, europe, US) to narrow the result set. Leave it empty to collect every country (about 250 in total).
Input reference
Every field is optional. With an empty input the actor returns countries up to maxCountries.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
maxCountries | integer | no | 10 | Maximum number of countries to collect (there are about 250 in total). |
searchQuery | string | no | (empty) | Keep only countries matching this text by name, region, subregion or ISO code, for example france, europe, US. Empty returns every country. |
Output reference
One dataset item per country. Types: string, integer, number, boolean, string[], number[], object, object[], or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
name | string | Common country name, for example India. |
officialName | string | Official country name, for example Republic of India. |
nativeName | string | Native-language name of the country. |
cca2 | string | ISO 3166-1 alpha-2 code, for example IN. |
cca3 | string | ISO 3166-1 alpha-3 code, for example IND. |
capital | string[] | Capital city or cities. |
region | string | World region, for example Asia. |
subregion | string | Subregion, for example Southern Asia. |
population | integer | Population count. |
area | number | Land area in square kilometers. |
languages | string[] | Official / recognized languages. |
currencies | string[] | Currency codes in use, for example INR. |
currencyName | string | Name of the primary currency. |
currencySymbol | string | Symbol of the primary currency, for example ₹. |
latlng | number[] | Latitude and longitude of the country centroid. |
timezones | string[] | IANA timezone identifiers. |
callingCode | string | Primary international calling code, for example +91. |
tld | string | Primary internet top-level domain, for example .in. |
flagEmoji | string | Flag as an emoji. |
flagUrl | string | URL to a PNG flag image. |
numericCode | string | ISO 3166-1 numeric code. |
nationality | string | Nationality adjective, for example Indian. |
demonym | string | Demonym for people of the country. |
gdp | number | Gross domestic product (in millions of USD). |
borders | string[] | ISO alpha-3 codes of bordering countries. |
independent | boolean | true when the country is independent. |
unMember | boolean | true when the country is a UN member. |
landlocked | boolean | true when the country is landlocked. |
ciocCode | string | International Olympic Committee country code. |
callingCodes | string[] | All international calling codes for the country. |
altSpellings | string[] | Alternative spellings and names. |
postalCodeFormat | string | Postal code format mask, or null. |
postalCodeRegex | string | Regex validating the postal code, or null. |
timezoneDetails | object[] | Per-timezone detail: zoneName, gmtOffset, gmtOffsetName, abbreviation, tzName. |
translations | object | Localized country names keyed by language code. |
wikiDataId | string | WikiData entity id, for example Q668. |
flagUnicode | string | Unicode code points of the flag emoji. |
googleMapsUrl | string | Google Maps link to the country. |
openStreetMapUrl | string | OpenStreetMap link to the country. |
source | string | Data source label. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
Example output record
Real record from a live search run (input {"searchQuery": "chile", "maxCountries": 3}). The translations object is trimmed to 5 of its real entries:
{"name": "Chile","officialName": "Republic of Chile","nativeName": "Chile","cca2": "CL","cca3": "CHL","capital": ["Santiago"],"region": "Americas","subregion": "South America","population": 20206953,"area": 756950,"languages": ["Spanish"],"currencies": ["CLP"],"currencyName": "Chilean peso","currencySymbol": "$","latlng": [-30, -71],"timezones": ["America/Punta_Arenas", "America/Santiago", "Pacific/Easter", "America/Coyhaique"],"callingCode": "+56","tld": ".cl","flagEmoji": "🇨🇱","flagUrl": "https://flagcdn.com/w320/cl.png","numericCode": "152","nationality": "Chilean","demonym": "Chilean","gdp": 343823,"borders": ["ARG", "BOL", "PER"],"independent": true,"unMember": true,"landlocked": false,"ciocCode": "CHI","callingCodes": ["+56"],"altSpellings": ["CL", "Republic of Chile", "República de Chile"],"postalCodeFormat": "#######","postalCodeRegex": "^(\\d{7})$","timezoneDetails": [{"zoneName": "America/Santiago", "gmtOffset": -10800, "gmtOffsetName": "UTC-03:00", "abbreviation": "CLST", "tzName": "Chile Summer Time"}],"translations": {"de": "Chile", "es": "Chile", "fr": "Chili", "it": "Cile", "zh-CN": "智利"},"wikiDataId": "Q298","flagUnicode": "U+1F1E8 U+1F1F1","googleMapsUrl": "https://www.google.com/maps/@-30,-71,6z","openStreetMapUrl": "https://www.openstreetmap.org/#map=6/-30/-71","source": "Country data","observedAt": "2026-08-15T09:34:31.669Z"}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~rest-countries-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQuery":"europe","maxCountries":50}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~rest-countries-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"maxCountries":300}'
Apify CLI:
apify call scrapers_lat/rest-countries-scraper \--input '{"searchQuery":"france"}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields. Nested fields (timezoneDetails, translations) flatten into indexed columns in CSV and Excel.
Billing and limits
- Pay per result. You are charged per country returned (
resultevent). See the pricing tab for the current per-result price. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 countries per run. Upgrade to pull all ~250 in one run.
FAQ and troubleshooting
A run returned 0 records. Why?
The searchQuery matched no country name, region, subregion or ISO code. Try a broader term or clear it. Zero-result runs are not charged.
How do I get every country?
Leave searchQuery empty and set maxCountries to 300 (there are about 250 countries). Free plans return the first 10.
How do I filter by continent?
Set searchQuery to a region or subregion, for example europe, africa, south america.
What units are area and gdp in?
area is in square kilometers. gdp is in millions of USD.
Why are some fields null?
Not every country publishes every attribute (for example some have no postalCodeFormat or borders). Missing values are returned as null, never invented.
Is this an official government tool? No. This actor is independent and returns publicly available reference data about countries. Use it in accordance with the source's terms.
Related scrapers
- Exchange Rates Scraper: live and historical currency exchange rates.
- GLEIF LEI Records Scraper: global legal entity identifier records.
- IMF Data Scraper: IMF macroeconomic indicators by country.
- GDELT News Events Scraper: global news events by country and theme.
- GBIF Species Scraper: global biodiversity species records.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool. Returns publicly available reference data about the world's countries. Use in accordance with the source's terms.
