Free APIs for Projects
Public APIs that actually work. No auth required (or free tier available).
OpenWeatherMap
openweathermap.org/apiCurrent weather, forecasts, and historical data for any location on Earth. Free tier gives 1,000 calls/day.
GET api.openweathermap.org/data/2.5/weather?q=London
What to build: A weather dashboard, travel planner, or gardening app.
Pokémon API
pokeapi.coComplete Pokémon data — species, abilities, moves, types, and sprites. Completely free, no key needed.
GET pokeapi.co/api/v2/pokemon/pikachu
What to build: A Pokédex app, battle simulator, or team builder.
REST Countries
restcountries.comCountry data — name, capital, population, flag, currencies, languages, and more.
GET restcountries.com/v3.1/name/india
What to build: A country explorer, flag quiz game, or travel app.
NASA Open APIs
api.nasa.govAstronomy Picture of the Day, Mars Rover photos, near-earth object data, and satellite imagery.
GET api.nasa.gov/planetary/apod?api_key=DEMO_KEY
What to build: A space gallery, daily space facts app, or Mars photo viewer.
GitHub REST API
docs.github.com/en/restAccess repos, users, issues, commits, and more. 5,000 requests/hour authenticated.
GET api.github.com/users/octocat/repos
What to build: A portfolio generator, repo stats dashboard, or contribution tracker.
JokeAPI
v2.jokeapi.devProgramming, dark, and general jokes with optional filtering. No auth needed.
GET v2.jokeapi.dev/joke/Programming?type=single
What to build: A joke generator, icebreaker app, or slack bot.
Quick Start Pattern
const res = await fetch("https://api.example.com/data");
const data = await res.json();
console.log(data);Always wrap in try/catch and handle loading/error states. Free APIs can be unreliable.