Build something with our data. A Slack bot. A screensaver. Whatever. We don't care what you make, as long as you link back.
fetch('https://incuriously.com/api/v1/today')
.then(res => res.json())
.then(fact => console.log(fact.title))
// "Honey never spoils."
Free tier gets you 100 requests/day with attribution required. Remove the attribution requirement by paying us money. Capitalism.
inc_sk_••••••••••••••••••••
curl "https://api.incuriously.com/v1/today" \
-H "Authorization: Bearer inc_sk_..."
Base URL: https://incuriously.com/api/v1
All endpoints return JSON. Here's what a fact looks like:
{
"id": "019b858e-6323-7038-8aed-8f9fe3741257",
"date": "2026-01-02",
"hook": "Honey never spoils",
"hook_highlight": "Honey",
"title": "Honey is the only food on earth that never goes bad.",
"description": "Archaeologists have found 3,000-year-old honey in Egyptian tombs that was still perfectly edible. Honey's low moisture content and acidic pH create an inhospitable environment for bacteria.",
"category": "Science",
"source": "National Geographic",
"source_url": "https://...",
"is_sponsored": false,
"sponsor": null
}
/today
Get today's fact. The one you didn't ask for.
/yesterday
Yesterday's fact. In case you missed it. You probably did.
/date/{'{date}'}
Get a fact from a specific date. Time travel without the paradoxes.
/week
Returns an array of this week's facts. For the overachievers.
/category/{'{slug}'}
Facts filtered by category. For picky people.
Available categories:
/random
A random fact from our archive. Chaos mode.
/search
Full-text search across all facts. Find that one fact you vaguely remember.
/categories
List all available categories with fact counts.
Things go wrong. Here's how we tell you:
| Code | Meaning |
|---|---|
| 200 | OK |
| 400 | Bad Request |
| 401 | Unauthorized |
| 404 | Not Found |
| 429 | Too Many Requests |
| 500 | Server Error |
const API_KEY = 'inc_sk_your_key_here';
async function getTodaysFact() {
const response = await fetch('https://incuriously.com/api/v1/today', {
headers: {
'Authorization': `Bearer ${API_KEY}`
}
});
const fact = await response.json();
return fact;
}
// Usage
getTodaysFact().then(fact => {
console.log(fact.title);
// "Honey never spoils."
});
import requests
API_KEY = 'inc_sk_your_key_here'
BASE_URL = 'https://incuriously.com/api/v1'
def get_todays_fact():
headers = {'Authorization': f'Bearer {API_KEY}'}
response = requests.get(f'{BASE_URL}/today', headers=headers)
return response.json()
def get_random_facts(count=5):
headers = {'Authorization': f'Bearer {API_KEY}'}
response = requests.get(
f'{BASE_URL}/random?count={count}',
headers=headers
)
return response.json()
# Usage
fact = get_todays_fact()
print(fact['title']) # "Honey never spoils."
# Get today's fact
curl "https://incuriously.com/api/v1/today" \
-H "Authorization: Bearer inc_sk_your_key_here"
# Get fact from specific date
curl "https://incuriously.com/api/v1/date/2026-01-01" \
-H "Authorization: Bearer inc_sk_your_key_here"
# Search facts
curl "https://incuriously.com/api/v1/search?q=honey" \
-H "Authorization: Bearer inc_sk_your_key_here"
# Get 5 random facts
curl "https://incuriously.com/api/v1/random?count=5" \
-H "Authorization: Bearer inc_sk_your_key_here"
package main
import (
"encoding/json"
"net/http"
)
const apiKey = "inc_sk_your_key_here"
const baseURL = "https://incuriously.com/api/v1"
type Fact struct {
ID string `json:"id"`
Date string `json:"date"`
Title string `json:"title"`
Description string `json:"description"`
Category string `json:"category"`
}
func getTodaysFact() (*Fact, error) {
req, _ := http.NewRequest("GET", baseURL+"/today", nil)
req.Header.Set("Authorization", "Bearer "+apiKey)
resp, err := http.DefaultClient.Do(req)
if err != nil { return nil, err }
defer resp.Body.Close()
var fact Fact
json.NewDecoder(resp.Body).Decode(&fact)
return &fact, nil
}
Free tier is genuinely free. But attribution is required. Remove it by opening your wallet.
For hobbyists and experiments
For apps people actually use
Start for free. No card required.
For companies with lawyers
We'll try not to upsell you.
Free tier requires visible attribution. This isn't complicated:
Powered by Incuriously
Put it somewhere visible. Footer is fine. Hiding it in a comment tag is not fine. We check.
The API is free. The facts are good. What you do with them is your problem.
Get Your API Key