A curated collection of awesome public APIs and web scrapers for developers. Open source and community-driven. This repository aims to provide a comprehensive collection of public endpoints, APIs, and scraping solutions to help you build your next project.
โจ New! Check out practical code examples showing how to use popular APIs from this collection.
Includes Python & JavaScript examples for Pokemon, Cryptocurrency, AI Chat, and more!
๐ New to APIs? Don't worry! This guide will help you understand the basics and get started quickly.
API stands for Application Programming Interface. It's a way for different applications to communicate with each other.
โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ
โ YOU โ โโโโถโ API โ โโโโถ โ SERVER โ
โ (App) โ โโโโโ (Waiter)โ โโโโ โ(Kitchen)โ
โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ
Request Process Response
Think of it like a restaurant:
- ๐ You (the app) place an order
- ๐ฝ๏ธ Waiter (the API) takes your request to the kitchen
- ๐จโ๐ณ Kitchen (the server) prepares your food (data)
- โจ The waiter brings it back to you!
Different APIs have different ways to verify who you are:
| Method | Icon | Description | Example |
|---|---|---|---|
| No Auth | ๐ | Open for everyone - just call it! | Weather APIs, public data |
| API Key | ๐ | Secret code you get when registering | ?api_key=abc123 or Authorization: abc123 |
| OAuth | ๐ | Secure login (like "Login with Google") | Social media integrations |
| Apify Key | ๐ | Token required to run Apify scrapers/actors | Authorization: Bearer apify_api_... |
๐ก Pro Tip: Always keep your API keys secret! Never commit them to GitHub.
Learn the common ways to interact with APIs:
| Method | Icon | Purpose | Real-World Example |
|---|---|---|---|
GET |
๐ฅ | Retrieve data | Get a list of cat pictures |
POST |
๐ค | Create new data | Upload a new photo |
PUT |
โ๏ธ | Replace existing data | Update entire user profile |
PATCH |
๐ง | Modify specific fields | Change just your username |
DELETE |
๐๏ธ | Remove data | Delete a comment |
Example GET Request:
curl https://api.example.com/catsExample POST Request:
curl -X POST https://api.example.com/cats \
-H "Content-Type: application/json" \
-d '{"name":"Fluffy","age":3}'The API responds with a status code to tell you what happened:
| Code | Icon | Meaning |
|---|---|---|
200 |
โ | OK - Request succeeded! |
201 |
๐ | Created - New resource created! |
204 |
๐ญ | No Content - Success but no data to return |
| Code | Icon | Meaning | What to Do |
|---|---|---|---|
400 |
โ | Bad Request - Invalid syntax | Check your request format |
401 |
๐ | Unauthorized - Authentication required | Add your API key |
403 |
๐ซ | Forbidden - You don't have permission | Check your access rights |
404 |
๐ | Not Found - Resource doesn't exist | Verify the URL |
429 |
๐ | Too Many Requests - Rate limit hit | Wait and try again |
| Code | Icon | Meaning |
|---|---|---|
500 |
๐ฅ | Internal Server Error - API is broken |
503 |
๐ง | Service Unavailable - API is down |
| Tool | Best For | Platform | Free? |
|---|---|---|---|
| Postman | ๐ฏ Complete API testing & documentation | Desktop/Web | โ Yes (free tier) |
| Thunder Client | โก Lightweight testing in VS Code | VS Code Extension | โ Yes |
| cURL | ๐ป Command-line requests | Terminal | โ Yes (built-in) |
| Insomnia | ๐จ Beautiful UI for API testing | Desktop | โ Yes |
Let's try a real API call! Here's how to get a random cat fact:
1๏ธโฃ Using cURL (Terminal):
curl https://catfact.ninja/fact2๏ธโฃ Using JavaScript (Browser):
fetch('https://catfact.ninja/fact')
.then(response => response.json())
.then(data => console.log(data.fact));3๏ธโฃ Using Python:
import requests
response = requests.get('https://catfact.ninja/fact')
print(response.json()['fact'])๐ฆ Expected Response:
{
"fact": "Cats have 32 muscles in each ear.",
"length": 38
}- ๐ What is REST API? - RedHat Guide
- ๐ HTTP Status Codes Cheat Sheet - Quick reference
- ๐งช JSONPlaceholder - Free fake API for practice
- ๐ฌ API Best Practices - Stack Overflow Blog
We maintain a curated database of 31,945 public endpoints across 78 categories. You can browse the categories directly:
Note: The API database is automatically synchronized with our APIDex Hub Website.
Contributions are welcome. Please read CONTRIBUTING.md before opening a pull request.
You can also use the GitHub issue templates to suggest new APIs, report bugs, or request improvements.
This project follows the Code of Conduct. Please be respectful and constructive.
This project is licensed under the MIT License.
Don't forget to โญ this repo if you found it useful!