Incuriously.
0
Incuriously.

Facts you were never looking for.

/api/v1

An API for facts nobody requested.

Build something with our data. A Slack bot. A screensaver. Whatever. We don't care what you make, as long as you link back.

Quick example
fetch('https://incuriously.com/api/v1/today')
  .then(res => res.json())
  .then(fact => console.log(fact.title))
  // "Honey never spoils."
Step 1

Get your API key. It's free. Ish.

Free tier gets you 100 requests/day with attribution required. Remove the attribution requirement by paying us money. Capitalism.

Request API Access

Keys are issued instantly. We barely check anything.

Your API Key

inc_sk_••••••••••••••••••••

Using your key:

curl "https://api.incuriously.com/v1/today" \
  -H "Authorization: Bearer inc_sk_..."
Plan: Free
Rate limit: 100/day
Attribution: Required
Documentation

Endpoints. Not that complicated.

Base URL: https://incuriously.com/api/v1

Response Format

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
}
GET /today

Get today's fact. The one you didn't ask for.

No params
GET /v1/today
GET /yesterday

Yesterday's fact. In case you missed it. You probably did.

No params
GET /v1/yesterday
GET /date/{'{date}'}

Get a fact from a specific date. Time travel without the paradoxes.

date: YYYY-MM-DD
GET /v1/date/2026-01-01
GET /week

Returns an array of this week's facts. For the overachievers.

Returns array[7]
GET /v1/week
GET /category/{'{slug}'}

Facts filtered by category. For picky people.

?limit=10&offset=0
GET /v1/category/science?limit=10

Available categories:

science-discovery history-civilization space-universe nature-wildlife human-body-mind engineering-invention money-power-economics food-drink-obsession culture-fame-curiosity weird-unexplained
GET /random

A random fact from our archive. Chaos mode.

?count=1
GET /v1/random?count=5
GET /search

Full-text search across all facts. Find that one fact you vaguely remember.

?q=honey&limit=10
GET /v1/search?q=ancient+egypt
GET /categories

List all available categories with fact counts.

Returns array
GET /v1/categories

Error Codes

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
Code examples

Copy-paste. We won't judge.

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
}
Pricing

Pay us. Or don't. Whatever.

Free tier is genuinely free. But attribution is required. Remove it by opening your wallet.

Free

For hobbyists and experiments

$0 /forever
  • 100 requests/day
  • All endpoints
  • ! Attribution required
  • No sponsored facts filter
  • Community support only
Get Free Key
Popular

Pro

For apps people actually use

$29 /month
  • 10,000 requests/day
  • All endpoints
  • No attribution required
  • Filter out sponsored facts
  • Email support (we reply)
Talk to Sales

Start for free. No card required.

Enterprise

For companies with lawyers

$$$ /month
  • Unlimited requests
  • Dedicated infrastructure
  • Custom SLA (99.9%)
  • Priority support + Slack
  • Invoice billing (net 30)
Talk to Sales

We'll try not to upsell you.

About that attribution thing

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.

Questions you might have. Or not.

Go build something. Or don't.

The API is free. The facts are good. What you do with them is your problem.

Get Your API Key