DEV Community

Alex Spinov
Alex Spinov

Posted on

10 APIs That Give You Data Most People Pay For (All Free)

Free Data That Costs Others $50-500/Month

Most developers don't realize how much valuable data is available through free APIs. Here are 10 APIs that give you data people typically pay for — and they're all free.

1. Open-Meteo — Weather Data ($0 vs $40/mo)

Replaces: OpenWeather paid tier, WeatherAPI Pro

import requests

resp = requests.get("https://api.open-meteo.com/v1/forecast", params={
    "latitude": 40.71, "longitude": -74.01,
    "hourly": "temperature_2m,precipitation_probability",
    "forecast_days": 16  # 16 days free!
})
Enter fullscreen mode Exit fullscreen mode

No key. No rate limits. 80+ variables. Historical data back to 1940.

Full tutorial →

2. OpenAlex — Academic Research ($0 vs $200/mo)

Replaces: Scopus, Web of Science subscriptions

resp = requests.get("https://api.openalex.org/works", params={
    "search": "machine learning healthcare",
    "sort": "cited_by_count:desc", "per_page": 10
})
Enter fullscreen mode Exit fullscreen mode

250M+ papers with citation data, author h-index, institutional affiliations. No key needed.

Full tutorial →

3. Yahoo Finance (via yfinance) — Stock Data ($0 vs $50/mo)

Replaces: Alpha Vantage premium, Bloomberg terminal (lol)

# pip install yfinance
import yfinance as yf

stock = yf.Ticker("AAPL")
print(stock.info["currentPrice"])
print(stock.history(period="1mo"))
Enter fullscreen mode Exit fullscreen mode

Real-time prices, historical data, financials, insider transactions.

4. Have I Been Pwned — Breach Data ($0 vs custom)

Replaces: Paid breach monitoring services

import hashlib, requests

def check_password(password):
    sha1 = hashlib.sha1(password.encode()).hexdigest().upper()
    prefix, suffix = sha1[:5], sha1[5:]
    resp = requests.get(f"https://api.pwnedpasswords.com/range/{prefix}")
    return suffix in resp.text

print(check_password("password123"))  # True (breached!)
Enter fullscreen mode Exit fullscreen mode

Check if any password has been in a data breach. k-Anonymity model — your password never leaves your machine.

5. OpenCitations — Citation Graph ($0 vs $100/mo)

Replaces: Dimensions, Lens.org premium

doi = "10.1038/nature12373"
resp = requests.get(f"https://opencitations.net/index/api/v2/citation-count/{doi}")
print(f"Citations: {resp.json()[0]['count']}")
Enter fullscreen mode Exit fullscreen mode

1.5 billion citation links. Completely open. No other free source has this scale.

Part of our academic API collection →

6. Unpaywall — Open Access Finder ($0 vs manual searching)

Replaces: Manually searching for PDFs

doi = "10.1038/nature12373"
resp = requests.get(f"https://api.unpaywall.org/v2/{doi}?email=you@email.com")
oa = resp.json().get("best_oa_location")
if oa:
    print(f"Free PDF: {oa.get('url_for_pdf') or oa.get('url')}")
Enter fullscreen mode Exit fullscreen mode

Find free legal versions of paywalled papers. Just pass your email as the "key."

7. ip-api.com — IP Geolocation ($0 vs $15/mo)

Replaces: MaxMind paid, IPinfo paid tier

resp = requests.get("http://ip-api.com/json/8.8.8.8")
data = resp.json()
print(f"{data['city']}, {data['country']} | ISP: {data['isp']}")
Enter fullscreen mode Exit fullscreen mode

Free for non-commercial use. City, country, ISP, timezone, coordinates.

8. ExchangeRate-API — Currency Rates ($0 vs $10/mo)

Replaces: Fixer.io paid, Open Exchange Rates paid

resp = requests.get("https://open.er-api.com/v6/latest/USD")
rates = resp.json()["rates"]
print(f"1 USD = {rates['EUR']} EUR = {rates['GBP']} GBP = {rates['JPY']} JPY")
Enter fullscreen mode Exit fullscreen mode

Updated daily. 150+ currencies. No key for basic usage.

9. restcountries.com — Country Data ($0 vs building it yourself)

resp = requests.get("https://restcountries.com/v3.1/name/japan")
country = resp.json()[0]
print(f"Capital: {country['capital'][0]}")
print(f"Population: {country['population']:,}")
print(f"Languages: {', '.join(country['languages'].values())}")
print(f"Currency: {list(country['currencies'].values())[0]['name']}")
Enter fullscreen mode Exit fullscreen mode

250 countries with flags, languages, currencies, borders, timezones. No key.

10. GNews — News Search ($0 vs $100/mo)

Replaces: NewsAPI paid tier, Google News scraping

# Free tier: 100 requests/day
resp = requests.get("https://gnews.io/api/v4/search", params={
    "q": "artificial intelligence",
    "lang": "en",
    "max": 5,
    "apikey": "YOUR_FREE_KEY"  # Free at gnews.io
})
for article in resp.json()["articles"]:
    print(f"{article['title']}")
    print(f"  {article['source']['name']}{article['publishedAt'][:10]}")
Enter fullscreen mode Exit fullscreen mode

The Full Collection

I maintain curated lists of free APIs:


What free API saves you the most money? Drop your favorites in the comments — I'll add them to the collection.

I write about free APIs and developer tools every week. Follow for more.


More from me: 10 Dev Tools I Use Daily | 77 Scrapers on a Schedule | 150+ Free APIs

Top comments (0)