DEV Community

Alex Spinov
Alex Spinov

Posted on

10 Developer Tools I Wish I Found Sooner (All Free)

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'))
Enter fullscreen mode Exit fullscreen mode

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")
Enter fullscreen mode Exit fullscreen mode

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']}")
Enter fullscreen mode Exit fullscreen mode

4. wttr.in — Weather in Terminal

curl wttr.in/London
Enter fullscreen mode Exit fullscreen mode

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())
Enter fullscreen mode Exit fullscreen mode

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)")
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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']}")
Enter fullscreen mode Exit fullscreen mode

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']}")
Enter fullscreen mode Exit fullscreen mode

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")
Enter fullscreen mode Exit fullscreen mode

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)