Normalize Countries, Postal Codes & Currencies - ISO Codes avatar

Normalize Countries, Postal Codes & Currencies - ISO Codes

Pricing

$0.30 / 1,000 row normalizeds

Go to Apify Store
Normalize Countries, Postal Codes & Currencies - ISO Codes

Normalize Countries, Postal Codes & Currencies - ISO Codes

Messy country names, postal codes and currencies to clean ISO codes. Country in any language to ISO 3166, postal codes validated and reformatted per country (lost leading zeros restored), currencies to ISO 4217. Offline, built for Google Maps and lead datasets.

Pricing

$0.30 / 1,000 row normalizeds

Rating

0.0

(0)

Developer

mohamed alaya

mohamed alaya

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a month ago

Last modified

Security

Limited permissions

Share

Turns the messy country, postal-code and currency columns of a scraped dataset into clean ISO codes: "Deutschland" and "D-10115" and "euros" become DE, 10115 and EUR. Built for people who merge Google Maps, lead or e-commerce datasets from many countries and need one consistent format before loading a CRM or warehouse.

Quick start

  1. Run your scraper, then start this Actor and pick its dataset in Dataset(s) to normalize.
  2. Columns named like country, postalCode / zip / postcode and currency are detected automatically (or name them in the field settings).
  3. Download the result as JSON, CSV or Excel. Run with empty input to see a demo of 9 messy rows.

Input examples

1. Dataset from a scraper

{ "datasets": ["<pick with the dataset picker>"] }

2. Pasted rows

{ "rows": [{ "country": "Tunisie", "postalCode": "1000", "currency": "dinar tunisien" }, { "country": "usa", "postalCode": "2134", "currency": "$" }] }

3. Rows with only an address, with a default country and place lookup

{ "rows": [{ "address": "5 Main St, Austin, TX 78701, United States", "postcode": "78701" }], "defaultCountry": "US", "lookupPlaces": true }

Input guide

FieldWhat it does
datasetsPick one or more datasets (the picker gives the Actor read permission).
rows / rowsCsvPaste JSON rows, a JSON array or a CSV with a header row.
countryField, postalField, currencyField, addressFieldColumn names, empty = auto-detect.
defaultCountryCountry assumed for rows that have none.
lookupPlacesAdd place name, region and coordinates for valid postal codes (zippopotam.us, about 60 countries).
keepAllFields, maxRowsKeep original columns / safety limit.

Output

Your original columns are kept and these are added (only for the columns that exist):

FieldMeaning
countryIso2, countryIso3, countryNumeric, countryNameISO 3166 codes and the English name.
countryMatch, countrySourceHow it was found: code, name (any of 78 languages, plus aliases like UK, Holland, Czechia), fuzzy (one or two typos), address (from the end of an address), default.
postalCode, postalValid, postalNoteCleaned postal code, true/false (or null when the country has no rule), and what was fixed (zero-padded, removed-country-prefix, reformatted).
currencyCode, currencyNumeric, currencyName, currencyMatchISO 4217 from a code, symbol (€, zł, د.ت), name ("dinar tunisien", "euros") or $ / kr / Rs. disambiguated by the row's country (symbol-country) or assumed (symbol-assumed).
countryCurrencyOfficial currency of the row's country.
normalizationFixesPlain list of what was corrected.
plus placeName, region, latitude, longitudeOnly with lookupPlaces.

Sample row:

{ "country": "Deutschland", "postalCode": "D-10115", "currency": "euros", "countryIso2": "DE", "countryIso3": "DEU", "countryName": "Germany", "countryMatch": "name", "postalCode": "10115", "postalValid": true, "currencyCode": "EUR", "countryCurrency": "EUR" }

Use it with

Google Maps scraper or lead finder -> this Actor -> your CRM or warehouse. This Actor does not split street addresses; it standardises the country, postal and currency columns for every country.

FAQ

What is the difference to an address parser? This Actor does not split street addresses. It standardises three columns.

Does it call a web service? Only if you turn on lookupPlaces (zippopotam.us). Everything else is offline.

Why was my postal code "zero-padded"? Spreadsheets drop leading zeros (02134 becomes 2134). When the padded code is valid for the country and the original is not, it is restored.

Honest limits

  • A bare $ without a country is assumed to be USD; kr, Rs. and pesos need a country, otherwise the currency stays empty or assumed. ¥ is read as yen unless the country is China.
  • Postal rules come from a public rules library; postalValid: null means the country has no rule, false means the code does not match the national format (it does not prove the code exists).
  • Country spelling correction handles one or two typos in names of six letters or more; short or very garbled names stay unrecognised rather than guessed.
  • Country from an address only looks at the last two comma-separated parts.

Price

Pay per event: $0.0003 per row normalized (rows where at least a country, a valid postal code or a currency was resolved; unresolved rows are free). 100,000 rows = $30.