No signup. No OAuth. No API key. Just send an HTTP request and get data back.
Here are 10 APIs that work immediately:
1. Open-Meteo (Weather)
import requests
r = requests.get("https://api.open-meteo.com/v1/forecast",
params={"latitude": 40.71, "longitude": -74.01, "current_weather": True})
print(f"NYC: {r.json()['current_weather']['temperature']}°C")
2. USGS Earthquakes
r = requests.get("https://earthquake.usgs.gov/fdsnws/event/1/query",
params={"format": "geojson", "minmagnitude": 5, "limit": 3})
for eq in r.json()['features']:
print(f"M{eq['properties']['mag']} — {eq['properties']['place']}")
3. REST Countries
r = requests.get("https://restcountries.com/v3.1/name/japan")
c = r.json()[0]
print(f"{c['name']['common']}: {c['population']:,} people")
4. Crossref (150M+ Academic Articles)
r = requests.get("https://api.crossref.org/works",
params={"query": "machine learning", "rows": 3})
for item in r.json()['message']['items']:
print(item['title'][0][:60])
5. OpenAlex (250M+ Papers)
r = requests.get("https://api.openalex.org/works",
params={"search": "CRISPR", "per_page": 3})
for w in r.json()['results']:
print(f"{w['title'][:50]}... ({w['cited_by_count']} citations)")
6. JSONPlaceholder (Fake Data)
r = requests.get("https://jsonplaceholder.typicode.com/posts/1")
print(r.json()['title'])
7. Dog CEO (Random Dog Photos)
r = requests.get("https://dog.ceo/api/breeds/image/random")
print(r.json()['message']) # URL to a random dog photo
8. CoinGecko (Crypto Prices)
r = requests.get("https://api.coingecko.com/api/v3/simple/price",
params={"ids": "bitcoin,ethereum", "vs_currencies": "usd"})
for coin, data in r.json().items():
print(f"{coin}: ${data['usd']:,}")
9. arXiv (Research Preprints)
r = requests.get("http://export.arxiv.org/api/query",
params={"search_query": "all:quantum computing", "max_results": 3})
print(r.text[:500]) # XML response with paper data
10. PubMed (Medical Papers)
r = requests.get("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi",
params={"db": "pubmed", "term": "covid vaccine", "retmax": 3, "retmode": "json"})
print(f"Found: {r.json()['esearchresult']['count']} papers")
Quick Reference
| API | Data | URL |
|---|---|---|
| Open-Meteo | Weather | api.open-meteo.com |
| USGS | Earthquakes | earthquake.usgs.gov |
| REST Countries | Countries | restcountries.com |
| Crossref | 150M+ papers | api.crossref.org |
| OpenAlex | 250M+ papers | api.openalex.org |
| JSONPlaceholder | Fake data | jsonplaceholder.typicode.com |
| Dog CEO | Dog photos | dog.ceo |
| CoinGecko | Crypto prices | api.coingecko.com |
| arXiv | Preprints | export.arxiv.org |
| PubMed | Medical papers | eutils.ncbi.nlm.nih.gov |
I built Python toolkits for the academic APIs — all on my GitHub.
What's your go-to free API? Drop it in the comments!
Top comments (0)