# 🌐 GeoSource API
## Overview
**GeoSource API** is a powerful and reliable RESTful API that provides extensive geo-data on over 249 countries and territories. It gives developers the ability to retrieve detailed and up-to-date geographic, political, and cultural information for use in applications ranging from logistics to travel, commerce, and education.
---
## 🚀 Features
- 🌍 Country names, capitals, phone codes, flags
- 💱 Currency codes and symbols
- 🏙️ States and cities
- 📍 Zip code and location lookups
- 🌐 Emoji flag support for countries
---
### Supported Countries for Zip Code Data
Algeria, Andorra, Argentina, Armenia, Australia, Austria, Azerbaijan, Bangladesh, Belarus, Belgium, Brazil, Bulgaria, Canada, Chile, Colombia, Czech Republic, France, Germany, Guatemala, Haiti, Hungary, Iceland, India, Italy, Mexico, Moldova, Morocco, Philippines, Poland, Romania, Russia, San Marino, Serbia, Singapore, Slovakia, Slovenia, Spain, Sri Lanka, Sweden, Switzerland, Thailand, United Kingdom, United States, Uruguay.
## 📌 API Endpoints
All endpoints use the **GET** method.
### 1. `CountriesList`
- **Endpoint**: `/CountriesList`
- **Description**: Retrieves a full list of all countries with available data.
---
### 2. `Capital By Country`
- **Endpoint**: `/CapitalByCountry`
- **Query Parameter**:
- `country`: Name of the country (e.g., `France`)
- **Description**: Returns the capital city of the specified country.
---
### 3. `Phone Code By Country`
- **Endpoint**: `/PhoneCodeByCountry`
- **Query Parameter**:
- `country`: Name of the country (e.g., `India`)
- **Description**: Returns the international phone code of the specified country.
---
### 4. `Currency By Country`
- **Endpoint**: `/CurrencyByCountry`
- **Query Parameter**:
- `country`: Name of the country
- **Description**: Returns the currency code and symbol of the specified country.
---
### 5. `emoji Flag By Country`
- **Endpoint**: `/emojiFlagByCountry`
- **Query Parameter**:
- `country`: Name of the country
- **Description**: Returns the emoji representation of the country's flag.
---
### 6. `states By Country`
- **Endpoint**: `/statesByCountry`
- **Query Parameter**:
- `country`: Name of the country
- **Description**: Returns a list of states or provinces in the given country.
---
### 7. `cities By State`
- **Endpoint**: `/citiesByState`
- **Query Parameters**:
- `state`: Name of the state
- **Description**: Returns cities within the given state and country.
---
### 8. `Location By City`
- **Endpoint**: `/LocationByCity`
- **Query Parameters**:
- `city`: Name of the city
- **Description**: Returns location details (like lat/lon) for a given city.
---
### 9. `ZipCode By City`
- **Endpoint**: `/ZipCodeByCity`
- **Query Parameters**:
- `city`: Name of the city
- **Description**: Returns zip/postal codes associated with a given city.
---
[
{
"countryID": "1",
"countryName": "Afghanistan",
"CountryCode": "AF",
"numericCode": "004",
"nativeName": "افغانستان",
"Region": "Asia",
"SubRegion": "Southern Asia"
},
{
"countryID": "2",
"countryName": "Aland Islands",
"CountryCode": "AX",
"numericCode": "248",
"nativeName": "Åland",
"Region": "Europe",
"SubRegion": "Northern Europe"
},
{
"countryID": "3",
"countryName": "Albania",
"CountryCode": "AL",
"numericCode": "008",
"nativeName": "Shqipëria",
"Region": "Europe",
"SubRegion": "Southern Europe"
}
]
curl --location --request GET 'https://zylalabs.com/api/6794/geosource+api/10207/countries+list' --header 'Authorization: Bearer YOUR_API_KEY'
[
{
"countryName": "United States",
"CountryCode": "US",
"Capital": "Washington"
}
]
curl --location --request GET 'https://zylalabs.com/api/6794/geosource+api/10208/capital+by+country?country=us' --header 'Authorization: Bearer YOUR_API_KEY'
[
{
"CountryName": "United States",
"CountryCode": "US",
"PhoneCode": "+1"
}
]
curl --location --request GET 'https://zylalabs.com/api/6794/geosource+api/10209/phone+code+by+country?country=us' --header 'Authorization: Bearer YOUR_API_KEY'
[
{
"CountryName": "United States",
"CountryCode": "US",
"Currency": "USD",
"CurrencySymbol": "$"
}
]
curl --location --request GET 'https://zylalabs.com/api/6794/geosource+api/10214/currency+by+country?country=us' --header 'Authorization: Bearer YOUR_API_KEY'
[
{
"CountryName": "United States",
"CountryCode": "US",
"emojiU": "U+1F1FA U+1F1F8"
}
]
curl --location --request GET 'https://zylalabs.com/api/6794/geosource+api/10215/emoji+flag+by+country?country=eg' --header 'Authorization: Bearer YOUR_API_KEY'
[
{
"StateName": "Alabama",
"StateCode": "AL",
"CountryCode": "US",
"latitude": "32.3182314",
"longitude": "-86.902298"
},
{
"StateName": "Alaska",
"StateCode": "AK",
"CountryCode": "US",
"latitude": "64.2008413",
"longitude": "-149.4936733"
}
]
curl --location --request GET 'https://zylalabs.com/api/6794/geosource+api/10216/states+by+country?country=us' --header 'Authorization: Bearer YOUR_API_KEY'
[
{
"CityName": "Abbeville",
"StateCode": "AL",
"CountryCode": "US",
"latitude": "31.57184000",
"longitude": "-85.25049000"
},
{
"CityName": "Adamsville",
"StateCode": "AL",
"CountryCode": "US",
"latitude": "33.60094000",
"longitude": "-86.95611000"
}
]
curl --location --request GET 'https://zylalabs.com/api/6794/geosource+api/10217/cities+by+state?state=alabama' --header 'Authorization: Bearer YOUR_API_KEY'
[
{
"CityName": "El Cairo",
"StateCode": "VAC",
"CountryCode": "CO",
"latitude": "4.74889000",
"longitude": "-76.24443000"
},
{
"CityName": "Cairo",
"StateCode": "C",
"CountryCode": "EG",
"latitude": "30.06263000",
"longitude": "31.24967000"
},
{
"CityName": "New Cairo",
"StateCode": "C",
"CountryCode": "EG",
"latitude": "30.03000000",
"longitude": "31.47000000"
},
{
"CityName": "Cairon",
"StateCode": "NOR",
"CountryCode": "FR",
"latitude": "49.24017000",
"longitude": "-0.45046000"
},
{
"CityName": "Cairo Montenotte",
"StateCode": "42",
"CountryCode": "IT",
"latitude": "44.39790000",
"longitude": "8.27775000"
},
{
"CityName": "Gropello Cairoli",
"StateCode": "25",
"CountryCode": "IT",
"latitude": "45.17707000",
"longitude": "8.99353000"
},
{
"CityName": "Pieve del Cairo",
"StateCode": "25",
"CountryCode": "IT",
"latitude": "45.04920000",
"longitude": "8.80322000"
},
{
"CityName": "Cairo",
"StateCode": "GA",
"CountryCode": "US",
"latitude": "30.87751000",
"longitude": "-84.20214000"
},
{
"CityName": "Cairo",
"StateCode": "IL",
"CountryCode": "US",
"latitude": "37.00533000",
"longitude": "-89.17646000"
},
{
"CityName": "Cairo",
"StateCode": "NY",
"CountryCode": "US",
"latitude": "42.29897000",
"longitude": "-73.99847000"
}
]
curl --location --request GET 'https://zylalabs.com/api/6794/geosource+api/10218/location+by+city?city=Abbeville' --header 'Authorization: Bearer YOUR_API_KEY'
[
{
"CityName": "Brussels",
"StateCode": "BRU",
"CountryCode": "BE",
"latitude": "50.85045000",
"longitude": "4.34878000",
"zip": [
"1000"
]
},
{
"CityName": "Brussels",
"StateCode": "ON",
"CountryCode": "CA",
"latitude": "43.73339000",
"longitude": "-81.24975000",
"zip": [
"N0G 0B2",
"N0G 1H0"
]
},
{
"CityName": "Brussels",
"StateCode": "WI",
"CountryCode": "US",
"latitude": "44.73611000",
"longitude": "-87.62093000",
"zip": [
"54204",
"62013",
"09714",
"09724"
]
}
]
curl --location --request GET 'https://zylalabs.com/api/6794/geosource+api/10223/zip+code+by+city?city=Abbeville' --header 'Authorization: Bearer YOUR_API_KEY'
| Header | Description |
|---|---|
Authorization
|
[Required] Should be Bearer access_key. See "Your API Access Key" above when you are subscribed. |
No long-term commitment. Upgrade, downgrade, or cancel anytime. Free Trial includes up to 50 requests.
Each endpoint returns specific geo-information. For example, `/CountriesList` provides country names, codes, and regions, while `/CapitalByCountry` returns the capital city of a specified country. Other endpoints deliver data on phone codes, currencies, states, cities, locations, and zip codes.
Key fields vary by endpoint. For `/CountriesList`, fields include `countryID`, `countryName`, and `Region`. For `/CurrencyByCountry`, fields include `CountryName`, `Currency`, and `CurrencySymbol`. Each endpoint's response structure is tailored to the data it provides.
Each endpoint has specific query parameters. For instance, `/CapitalByCountry` requires the `country` parameter, while `/citiesByState` needs the `state` parameter. Users must provide valid country or state names to retrieve accurate data.
Response data is structured as JSON arrays of objects. Each object contains relevant fields for the requested data. For example, the response from `/LocationByCity` includes `CityName`, `latitude`, and `longitude`, making it easy to parse and utilize in applications.
The GeoSource API aggregates data from reliable geographic and governmental sources to ensure accuracy. Data is regularly updated to reflect changes in geopolitical boundaries, currency, and other relevant information, maintaining high quality and reliability.
Typical use cases include travel applications needing country and city information, e-commerce platforms requiring currency data, and logistics services that utilize zip code and location details for shipping. Developers can enhance user experiences with accurate geo-information.
Users can integrate the returned data into applications by parsing the JSON responses. For example, using the `latitude` and `longitude` from `/LocationByCity`, developers can display maps or calculate distances. Each endpoint's structured data allows for straightforward implementation.
If an endpoint returns partial or empty results, users should implement error handling in their applications. For example, if no cities are found for a state in `/citiesByState`, the application can prompt the user to check the state name or provide alternative suggestions.
To obtain your API key, first sign in to your account and navigate to the API you want to use. From the API's Pricing section, choose a plan and complete the subscription process. Once subscribed, return to the API page and you will see your API Access Key displayed at the top of the documentation page. You can use this key to authenticate your requests.
You can’t switch APIs during the free trial. If you subscribe to a different API, your trial will end and the new subscription will start as a paid plan.
The free trial lasts for 7 days and allows you to make up to 50 API requests.
No, the free trial is available only once, so we recommend using it on the API that interests you the most. Most of our APIs offer a free trial, but some may not include this option.
Yes. If the API offers a free trial, you will see a "Free 7-Day Trial" option in its Pricing section. The trial lasts for 7 days and allows up to 50 API requests, enabling you to evaluate the API before subscribing to a paid plan.
Zyla API Hub is like a big store for APIs, where you can find thousands of them all in one place. We also offer dedicated support and real-time monitoring of all APIs. Once you sign up, you can pick and choose which APIs you want to use. Just remember, each API needs its own subscription. But if you subscribe to multiple ones, you'll use the same key for all of them, making things easier for you.
You can monitor your API usage through the response headers included with every request:
x-zyla-api-calls-monthly-used: Shows the total number of API requests you have used during the current billing period.
x-zyla-api-calls-monthly-remaining: Shows the number of API requests you have remaining for the current billing period.
Yes, you can cancel your subscription at any time. Simply go to the Pricing section of the API you're subscribed to and click the "Unsubscribe" button.
Please note that upgrades, downgrades, and cancellations take effect immediately. Once your subscription is canceled, access to the service will end immediately, regardless of any remaining API calls in your quota.
Please have a look at our Refund Policy: https://zylalabs.com/terms#refund
Service Level:
100%
Response Time:
1,541ms
Service Level:
50%
Response Time:
160ms
Service Level:
100%
Response Time:
1,466ms
Service Level:
83%
Response Time:
564ms
Service Level:
100%
Response Time:
2,429ms
Service Level:
100%
Response Time:
208ms
Service Level:
100%
Response Time:
1,017ms
Service Level:
100%
Response Time:
570ms
Service Level:
90%
Response Time:
603ms
Service Level:
100%
Response Time:
638ms