API Documentation
One API key unlocks every category below | weather, finance & crypto, geography and space/nature data. Free to start, no credit card, ready in about two minutes.
We ask for an email address only to confirm you're a real person and to reach you about your key later. No account, no password, ever.
Same header, same rate-limit headers, same error format everywhere | learn it once, use it for weather, finance, geography and space data alike.
Get a free API key
Enter your email address. We'll send a confirmation link | click it within 30 minutes and your free API key will be shown right there (100 requests/day, no credit card).
Authentication & rate limits
Send your key as the X-Api-Key header (or the apiKey query
parameter). Every response includes X-RateLimit-Limit,
X-RateLimit-Remaining and X-RateLimit-Reset so you always
know where you stand.
100 requests/day free, no credit card. Need more? See Pricing for Pro/Business plans and to upgrade an existing key.
Endpoints
| Method | Endpoint | Description | Source |
|---|---|---|---|
GET | /api/v1/weather/geocode?city=... | Look up coordinates for a city name | Open-Meteo |
GET | /api/v1/weather/current?lat=&lon= | Current conditions for a coordinate | Open-Meteo |
GET | /api/v1/weather/forecast?lat=&lon=&days=1-16 | Current + daily forecast | Open-Meteo |
GET | /api/v1/weather/air-quality?lat=&lon= | PM2.5/PM10, ozone, AQI | Open-Meteo |
GET | /api/v1/weather/alerts?state=CA | Live active severe weather alerts for a US state | NWS |
| Method | Endpoint | Description | Source |
|---|---|---|---|
GET | /api/v1/finance/exchange-rates?base=USD&symbols=EUR,GBP | Latest FX rates | Frankfurter |
GET | /api/v1/finance/convert?from=&to=&amount= | Convert an amount between currencies | Frankfurter |
GET | /api/v1/finance/crypto/prices?ids=bitcoin,ethereum&vs=usd | Live crypto prices + 24h change. Response includes stale/asOfUtc: if CoinGecko's shared rate limit is briefly exhausted, the last known price is returned with stale: true instead of an error | CoinGecko |
| Method | Endpoint | Description | Source |
|---|---|---|---|
GET | /api/v1/geography/countries?search=... | Search countries by name | mledoze/countries |
GET | /api/v1/geography/countries/{code} | Country by ISO alpha-2/alpha-3 code | mledoze/countries |
GET | /api/v1/geography/holidays?country=US&year=2026 | Public holidays for a country/year | Nager.Date |
GET | /api/v1/geography/ip-lookup?ip=... | Geolocate an IPv4/IPv6 address | ip-api.com |
| Method | Endpoint | Description | Source |
|---|---|---|---|
GET | /api/v1/space/iss-location | Live ISS latitude/longitude/altitude | Where The ISS At |
GET | /api/v1/space/sunrise-sunset?lat=&lon=&date= | Sunrise, sunset, solar noon, day length | sunrise-sunset.org |
GET | /api/v1/space/people-in-space | Who's currently in space and on which craft | open-notify.org |
GET | /api/v1/nature/earthquakes?minMagnitude=&limit= | Recent earthquakes | USGS |
GET | /api/v1/nature/species?scientificName=&country=&limit= | Live species-occurrence sightings worldwide, e.g. from iNaturalist/eBird | GBIF |
GET | /api/v1/misc/quote | Random quote | DummyJSON |
GET | /api/v1/misc/joke?category= | Random joke, optionally filtered by category | chucknorris.io |
GET | /api/v1/misc/joke/categories | List of valid joke category ids | chucknorris.io |
GET | /api/v1/misc/advice | Random life advice | Advice Slip |
GET | /api/v1/misc/activity | Random activity suggestion for when you're bored | Bored API |
GET | /api/v1/aviation/live | Every aircraft currently tracked worldwide (~13,000 at a time). Refreshes every 15 minutes | OpenSky Network |
GET | /api/v1/aviation/history | Aircraft-count/altitude/speed trend over the last 24 hours, sampled every 15 min | OpenSky Network |
| Method | Endpoint | Description | Source |
|---|---|---|---|
GET | /api/v1/books/search?q=dune&limit=10 | Search books by title/author | Open Library |
GET | /api/v1/books/isbn/{isbn} | Full book details (authors, publisher, cover, subjects) by ISBN-10/13 | Open Library |
| Method | Endpoint | Description | Source |
|---|---|---|---|
GET | /api/v1/food/product/{barcode} | Nutrition facts, ingredients, allergens and Nutri-Score by barcode. Includes stale/asOfUtc, same fallback behavior as crypto prices | Open Food Facts |
GET | /api/v1/food/search?q=nutella&limit=10 | Search products by name/brand | Open Food Facts |
GET | /api/v1/food/cocktails/search?q=margarita | Search cocktail recipes by name | TheCocktailDB |
GET | /api/v1/food/cocktails/{id} | Full recipe: ingredients, measures, glass and instructions by id | TheCocktailDB |
| Method | Endpoint | Description | Source |
|---|---|---|---|
GET | /api/v1/entertainment/shows/search?q=breaking+bad&limit=10 | Search TV shows | TVMaze |
GET | /api/v1/entertainment/shows/{id} | Full show details, cast and rating by id | TVMaze |
| Method | Endpoint | Description | Source |
|---|---|---|---|
GET | /api/v1/knowledge/wikipedia/summary?title=Albert Einstein | Article summary, image and link (English Wikipedia) | Wikipedia |
GET | /api/v1/knowledge/wikipedia/search?q=quantum computing&limit=10 | Full-text article search | Wikipedia |
GET | /api/v1/knowledge/wikipedia/daily-feed?date=YYYY-MM-DD | Today's (or a past date's) featured article, in-the-news links and on-this-day facts | Wikipedia |
GET | /api/v1/knowledge/dictionary?word=hello | English word definitions, phonetics and parts of speech | dictionaryapi.dev |
GET | /api/v1/knowledge/universities?name=&country= | Search universities by name and/or country | Hipolabs Universities API |
| Method | Endpoint | Description | Source |
|---|---|---|---|
GET | /api/v1/music/artists/search?q=queen&limit=10 | Search artists | MusicBrainz |
GET | /api/v1/music/releases/search?q=...&limit=10 | Search album/release titles | MusicBrainz |
| Method | Endpoint | Description | Source |
|---|---|---|---|
GET | /api/v1/games/trivia?amount=10&category=&difficulty=&type= | Trivia questions; difficulty: easy/medium/hard, type: multiple/boolean | Open Trivia DB |
GET | /api/v1/games/trivia/categories | List of valid category ids | Open Trivia DB |
| Method | Endpoint | Description |
|---|---|---|
POST | /api/v1/keys | Request a free key (body: { "email": "..." }) | sends a confirmation email, no key returned directly |
GET | /api/v1/status | Live reachability of every upstream data source, key-less |
Example response
GET /api/v1/weather/current?lat=51.5&lon=-0.13
{
"latitude": 51.5,
"longitude": -0.13,
"timezone": "Europe/London",
"current": {
"timestamp": "2026-07-02T12:00:00",
"temperatureC": 21.4,
"apparentTemperatureC": 20.9,
"windSpeedKmh": 13.2,
"windDirectionDeg": 210,
"precipitationMm": 0,
"weatherCode": 1,
"condition": "Mainly clear",
"isDay": true
},
"daily": [ ]
}
Error codes
| Status | error | Meaning |
|---|---|---|
| 400 | invalid_parameter | A required or malformed query parameter |
| 401 | missing_api_key | No X-Api-Key header sent |
| 401 | invalid_api_key | Key doesn't exist (any more) |
| 404 | not_found | No matching data for the given parameters |
| 429 | rate_limit_exceeded | Daily limit reached, see X-RateLimit-Reset |
| 429 | upstream_rate_limited | A shared per-minute budget on the upstream (e.g. crypto prices, IP lookup, food product/search, music search, trivia) is briefly exhausted across all FreeOpenAPI.dev traffic, retry in a few seconds |
| 502 | upstream_unavailable | The upstream data source timed out or errored, try again shortly |
| 503 | email_not_configured | Email verification is temporarily unavailable |
Code examples
# Step 1: request a free key (sends a confirmation link to your email)
curl -X POST http://freeopenapi.dev/api/v1/keys \
-H "Content-Type: application/json" \
-d '{"email":"you@example.com"}'
# Step 2: click the link in your inbox, then use the key it shows you
curl "http://freeopenapi.dev/api/v1/weather/current?lat=51.5&lon=-0.13" \
-H "X-Api-Key: YOUR_API_KEY"const res = await fetch("http://freeopenapi.dev/api/v1/weather/current?lat=51.5&lon=-0.13", {
headers: { "X-Api-Key": "YOUR_API_KEY" }
});
const data = await res.json();
console.log(`${data.current.temperatureC}°C, ${data.current.condition}`);import requests
resp = requests.get(
"http://freeopenapi.dev/api/v1/finance/crypto/prices",
params={"ids": "bitcoin,ethereum", "vs": "usd"},
headers={"X-Api-Key": "YOUR_API_KEY"},
)
data = resp.json()
print(data["prices"])using var http = new HttpClient();
http.DefaultRequestHeaders.Add("X-Api-Key", "YOUR_API_KEY");
var json = await http.GetStringAsync("http://freeopenapi.dev/api/v1/geography/holidays?country=US&year=2026");
Console.WriteLine(json);<?php
$ch = curl_init("http://freeopenapi.dev/api/v1/space/iss-location");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["X-Api-Key: YOUR_API_KEY"]);
$data = json_decode(curl_exec($ch), true);
echo "ISS altitude: {$data['altitudeKm']} km";The Free tier is meant for personal projects, prototypes and low-traffic apps (100 requests/day comfortably covers a dashboard refreshing every few minutes). Need more for a product or service? Leave your email when requesting a key and we'll reach out as soon as Pro/Business are available.