REST Countries
Geocoding
Get information about countries via a RESTful API
Country metadata for every nation — flags, currencies, languages, calling codes.
Auth
No Auth
HTTPS
Yes
CORS
Yes
API URL
Common Use Cases
- •Build location-aware applications with mapping features
- •Create public transit and navigation tools
- •Develop government data dashboards and civic tech apps
Integration Guide
Review the API Documentation
Visit the official REST Countries documentation to understand available endpoints, request formats, and response structures. Familiarize yourself with the API's rate limits and usage policies before integration.
No Authentication Required
Good news — REST Countries does not require any authentication. You can start making API requests directly without registering for an API key or setting up OAuth credentials.
Use HTTPS for Secure Requests
REST Countries supports HTTPS, ensuring encrypted communication. Always use HTTPS endpoints in production to protect data in transit and comply with modern web security standards.
CORS Enabled — Direct Browser Access
REST Countries has CORS enabled, meaning you can make requests directly from the browser. This is ideal for frontend-only applications built with React, Vue, or vanilla JavaScript.
Implement and Test
Write your API integration code, start with a simple test request to verify connectivity. Implement proper error handling for network failures, rate limits, and invalid responses. Monitor your API usage to stay within any limits.
Code Examples
JavaScript / Fetch API:
// JavaScript example
fetch("https://restcountries.com")
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json();
})
.then(data => {
console.log("API response:", data);
})
.catch(error => {
console.error("Error fetching from REST Countries:", error);
});Python / Requests:
# Python example
import requests
response = requests.get("https://restcountries.com")
if response.status_code == 200:
data = response.json()
print("API response:", data)
else:
print(f"Error: {response.status_code}")Frequently Asked Questions
Is REST Countries free to use?
Do I need an API key for REST Countries?
Can I use REST Countries in a browser-based application?
What category does REST Countries belong to?
Is REST Countries secure?
Editor's Notes & Deep Dive
Key Features
- →GET /all returns every country with full metadata
- →GET /alpha/{code} looks up by ISO 3166-1 alpha-2/3 code
- →GET /name/{name} does fuzzy search by country name (in any language)
- →Field filtering via ?fields=name,capital,population reduces payload size
Rate Limits & Quotas
No published hard limit; hosted on Cloudflare, effectively unlimited for polite use.
Known Issues & Pitfalls
- !The v3.1 endpoint changed response shapes — pin to v3.1 to avoid surprises
- !Some territories (e.g. Kosovo) have partial recognition and appear with caveats
- !Filter with ?fields= to avoid the 250-country full payload when you only need one field
How It Compares
The de-facto free country metadata API. No alternatives come close in coverage or reliability.
Sample Response
{
"name": { "common": "Germany", "official": "Federal Republic of Germany" },
"cca2": "DE",
"capital": ["Berlin"],
"region": "Europe",
"population": 83240525,
"currencies": { "EUR": { "name": "Euro", "symbol": "€" } }
}Pro Tips
- ✓Always pass ?fields=... to shrink responses — /all is ~600KB unfiltered