FREE-APIS (a curated GitHub list of free API docs) fixes that. Open one menu, pick a category, and jump straight to the docs. Use the free tier to stand up features today, measure real use, then pay only when something earns it.
Open the FREE-APIS repo (a curated GitHub list of free API docs). It is a big menu grouped by topic. Scroll the categories and grab a URL you can call right now. You skip the “create account to view docs” dance and focus on shipping.
Pick a couple of endpoints to test your stack. For quick wins, I use Agify for simple JSON, open.er-api.com for exchange rates, Jikan for anime data, and CoinCap for crypto. They are all public, no card required.
First install a clean HTTP client so you can hit endpoints fast from a terminal.
bash
pip install httpie
Verify your toolchain and the idea with one request.
bash
http https://api.agify.io name==michael
You should see JSON with an age guess. If that works, try a second call like http https://open.er-api.com/v6/latest/USD to pull exchange rates. Stop here if you only needed a smoke test. The full guide below goes into setup per OS, sample code, caching, and handling rate limits.
Open the FREE-APIS repo (a curated GitHub list of free API docs). It is a big menu grouped by topic. Scroll the categories and grab a URL you can call right now. You skip the “create account to view docs” dance and focus on shipping.
Pick a couple of endpoints to test your stack. For quick wins, I use Agify for simple JSON, open.er-api.com for exchange rates, Jikan for anime data, and CoinCap for crypto. They are all public, no card required.
First install a clean HTTP client so you can hit endpoints fast from a terminal.
bash
pip install httpie
Verify your toolchain and the idea with one request.
bash
http https://api.agify.io name==michael
You should see JSON with an age guess. If that works, try a second call like http https://open.er-api.com/v6/latest/USD to pull exchange rates. Stop here if you only needed a smoke test. The full guide below goes into setup per OS, sample code, caching, and handling rate limits.
Setup
You do not install FREE-APIS. It is a GitHub list you read. What you install is a quick client for making requests and a formatter for JSON.
macOS
- Python and HTTPie
bash
python3 --version || brew install python
pip3 install --upgrade pip
pip3 install httpie
- Optional JSON pretty print
bash
brew install jq
Linux (Debian/Ubuntu)
bash
sudo apt update
sudo apt install -y python3 python3-pip curl
pip3 install --user httpie
# ensure ~/.local/bin is on PATH
export PATH="$HOME/.local/bin:$PATH"
Windows
- Install Python from Microsoft Store or use winget
bash
winget install -e --id Python.Python.3.12
- Then install HTTPie
bash
py -m pip install --upgrade pip
py -m pip install httpie
Already have curl
bash
curl --version
Use curl if you prefer. All examples below show both.
Verify
Check HTTPie is on PATH.
bash
http --version
Expected output snippet
3.x.x
Hit three public endpoints to confirm networking and JSON handling.
- Agify
bash
http https://api.agify.io name==michael
Example response
json
{
"name": "michael",
"age": 69,
"count": 145960
}
- Exchange rates
bash
http https://open.er-api.com/v6/latest/USD
Example response keys
json
{
"result": "success",
"base_code": "USD",
"rates": { "EUR": 0.91, "JPY": 157.2 }
}
- Anime data
bash
http https://api.jikan.moe/v4/anime/1
Example response keys
json
{
"data": {
"mal_id": 1,
"title": "Cowboy Bebop",
"episodes": 26
}
}
cURL equivalents
bash
curl -s "https://api.agify.io?name=michael"
curl -s https://open.er-api.com/v6/latest/USD
curl -s https://api.jikan.moe/v4/anime/1
Configuration tips
- Make a local scratchpad of working URLs
Create a file apis.txt with endpoints you validated. Keep one per category so you do not waste time next run.
bash
cat > apis.txt << 'EOF'
https://api.agify.io?name=michael
https://open.er-api.com/v6/latest/USD
https://api.jikan.moe/v4/anime/1
https://api.coincap.io/v2/assets/bitcoin
EOF
- Wrap a fetcher with retries and caching
bash
pip install requests requests-cache tenacity
py
# fetch.py
import os
import time
import requests
from tenacity import retry, stop_after_attempt, wait_exponential
import requests_cache
requests_cache.install_cache("api_cache", expire_after=300)
@retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=0.5, max=5))
def get_json(url: str):
r = requests.get(url, timeout=10)
r.raise_for_status()
return r.json()
if __name__ == "__main__":
print(get_json("https://api.agify.io?name=michael"))
print(get_json("https://open.er-api.com/v6/latest/USD")["rates"]["EUR"]) # demo
- Centralize API keys even for free tiers
Some links in FREE-APIS use a free API key. Store keys in a .env file and load them. It keeps secrets out of code and lets you swap providers later without edits across the codebase.
bash
pip install python-dotenv
py
# settings.py
import os
from dotenv import load_dotenv
load_dotenv()
EMAIL_API_KEY = os.getenv("EMAIL_API_KEY", "")
- Guard for limits in code
Check HTTP status for 429 and back off. Log the Retry-After header. Do not loop blindly.
py
def safe_get(url):
r = requests.get(url, timeout=10)
if r.status_code == 429:
delay = int(r.headers.get("Retry-After", "2"))
time.sleep(delay)
return requests.get(url, timeout=10)
r.raise_for_status()
return r
- Keep consistent shapes
When you swap providers, normalize fields at the edge. For example, map any exchange rate payload into { base, rates, ts } before it touches business logic.
Troubleshooting
- 401 or 403 from an endpoint that the list says is free
Some “free” endpoints still need a key or a header. Read the linked docs, search for Authentication, then add the header. Example with a header template
bash
http GET https://example.free.api/v1/data "Authorization:Bearer FREE_KEY_123"
- 429 Too Many Requests when testing in a loop
You hit a rate limit. Add sleeps and caching. Run fewer parallel requests. In shell
bash
for i in $(seq 1 5); do http https://api.agify.io name==michael; sleep 2; done
- SSL certificate verify failed on Windows
Update certs in the Python store
bash
py -m pip install --upgrade certifi
py -m pip install --upgrade requests
If it persists, use curl for quick tests to confirm it is a local Python trust store issue.
When it beats paid API marketplaces
- You are validating an idea this week. You only need one endpoint for email checks and one for rates. FREE-APIS gets you live responses in minutes with no signups.
- You are teaching or learning. Students get working JSON in class without juggling logins and keys. That keeps the focus on parsing and data modeling.
- You want a thin demo in a hackathon. Pull anime data and crypto prices without a billing profile. If the project becomes real, switch to a paid tier later.
- You prefer provider diversity. FREE-APIS helps you sample two or three providers per category before you commit. You avoid vendor lock in while you explore.
Sources
Want a hand?
Book a 30-min call.
Walk through your stack with us. We'll find the bottleneck and map out the exact wiring you need — free.