Countries Data Scraper - Population, Languages & Currencies avatar

Countries Data Scraper - Population, Languages & Currencies

Pricing

from $6.80 / 1,000 results

Go to Apify Store
Countries Data Scraper - Population, Languages & Currencies

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

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 hours ago

Last modified

Share

Countries Data Scraper - Population, Languages & Currencies

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

Apify Coverage Output Billing

Table of contents

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.

FieldTypeRequiredDefaultDescription
maxCountriesintegerno10Maximum number of countries to collect (there are about 250 in total).
searchQuerystringno(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.

FieldTypeDescription
namestringCommon country name, for example India.
officialNamestringOfficial country name, for example Republic of India.
nativeNamestringNative-language name of the country.
cca2stringISO 3166-1 alpha-2 code, for example IN.
cca3stringISO 3166-1 alpha-3 code, for example IND.
capitalstring[]Capital city or cities.
regionstringWorld region, for example Asia.
subregionstringSubregion, for example Southern Asia.
populationintegerPopulation count.
areanumberLand area in square kilometers.
languagesstring[]Official / recognized languages.
currenciesstring[]Currency codes in use, for example INR.
currencyNamestringName of the primary currency.
currencySymbolstringSymbol of the primary currency, for example .
latlngnumber[]Latitude and longitude of the country centroid.
timezonesstring[]IANA timezone identifiers.
callingCodestringPrimary international calling code, for example +91.
tldstringPrimary internet top-level domain, for example .in.
flagEmojistringFlag as an emoji.
flagUrlstringURL to a PNG flag image.
numericCodestringISO 3166-1 numeric code.
nationalitystringNationality adjective, for example Indian.
demonymstringDemonym for people of the country.
gdpnumberGross domestic product (in millions of USD).
bordersstring[]ISO alpha-3 codes of bordering countries.
independentbooleantrue when the country is independent.
unMemberbooleantrue when the country is a UN member.
landlockedbooleantrue when the country is landlocked.
ciocCodestringInternational Olympic Committee country code.
callingCodesstring[]All international calling codes for the country.
altSpellingsstring[]Alternative spellings and names.
postalCodeFormatstringPostal code format mask, or null.
postalCodeRegexstringRegex validating the postal code, or null.
timezoneDetailsobject[]Per-timezone detail: zoneName, gmtOffset, gmtOffsetName, abbreviation, tzName.
translationsobjectLocalized country names keyed by language code.
wikiDataIdstringWikiData entity id, for example Q668.
flagUnicodestringUnicode code points of the flag emoji.
googleMapsUrlstringGoogle Maps link to the country.
openStreetMapUrlstringOpenStreetMap link to the country.
sourcestringData source label.
observedAtstringISO 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:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "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 (result event). 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 error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on 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.

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.