I spent years paying for tools that have free alternatives.
Here are 10 tools that would have saved me thousands of dollars and hundreds of hours.
1. OSV.dev — Vulnerability Scanner
Google's open source vulnerability database. Drop in your requirements.txt and it tells you what's vulnerable.
import requests
def check(package, version, ecosystem='PyPI'):
resp = requests.post('https://api.osv.dev/v1/query', json={
'package': {'name': package, 'ecosystem': ecosystem},
'version': version
})
vulns = resp.json().get('vulns', [])
return f"{'⚠️' if vulns else '✅'} {package}=={version}: {len(vulns)} vulns"
print(check('requests', '2.25.0'))
print(check('django', '3.2.0'))
Free. No key. Covers npm, PyPI, Go, Rust, and 40+ ecosystems.
2. Open-Meteo — Weather Without Registration
Every weather API I tried required an API key. Open-Meteo doesn't.
resp = requests.get('https://api.open-meteo.com/v1/forecast', params={
'latitude': 40.7, 'longitude': -74.0,
'current': 'temperature_2m,wind_speed_10m'
})
print(f"NYC: {resp.json()['current']['temperature_2m']}°C")
3. Shodan InternetDB — Free IP Intel
Shodan's paid API costs $59/month. InternetDB gives you ports + CVEs for free.
data = requests.get('https://internetdb.shodan.io/8.8.8.8').json()
print(f"Ports: {data['ports']} | CVEs: {data['vulns']}")
4. wttr.in — Weather in Terminal
curl wttr.in/London
That's it. Weather in your terminal. One command.
5. CoinGecko API — Crypto Without Key
resp = requests.get('https://api.coingecko.com/api/v3/simple/price',
params={'ids': 'bitcoin,ethereum', 'vs_currencies': 'usd'})
print(resp.json())
10,000+ coins. Free forever.
6. OpenAlex — Academic Search (Google Scholar Alternative)
resp = requests.get('https://api.openalex.org/works',
params={'search': 'machine learning', 'per_page': 3})
for w in resp.json()['results']:
print(f"{w['title'][:50]} ({w['cited_by_count']} citations)")
250M papers. No key. Toolkit
7. URLhaus — Is This URL Malicious?
resp = requests.post('https://urlhaus-api.abuse.ch/v1/url/',
data={'url': 'https://suspicious.com'})
print(resp.json()['query_status']) # 'no_results' = clean
Free, no key, no limits.
8. ip-api.com — IP Geolocation
data = requests.get('http://ip-api.com/json/8.8.8.8').json()
print(f"{data['city']}, {data['country']} | ISP: {data['isp']}")
9. Nominatim — Geocoding Without Google
resp = requests.get('https://nominatim.openstreetmap.org/search',
params={'q': 'Eiffel Tower', 'format': 'json', 'limit': 1},
headers={'User-Agent': 'MyApp/1.0'})
r = resp.json()[0]
print(f"{r['display_name']} | {r['lat']}, {r['lon']}")
Google Maps API charges per request. This is free.
10. Exchange Rate API — Currency Data
resp = requests.get('https://open.er-api.com/v6/latest/USD')
print(f"1 USD = {resp.json()['rates']['EUR']} EUR")
150+ currencies. Updated daily.
I built Python toolkits for most of these: github.com/spinov001-art
Full collection: awesome-free-research-apis
What tool did you discover too late? I'm always looking for free gems.
Need data extraction? Apify scrapers | GitHub
Top comments (0)