Developer API
Trusted by many fortune brands around the world! Integrate over a million famous quotes into your app — Quote of the Day, random quotes, author details, quote images, and more via a simple REST API.
At They Said So® we have one of the largest collections of famous quotes on the internet — over a million quotes across 500+ categories. Our easy-to-use REST API gives you a simple, predictable way to access that data from any language or platform.
Whether you're building a productivity app, a smart mirror display, a daily inspiration widget, or a large-scale content platform, the Quotes API has you covered. Subscribe for higher rate limits, bulk retrieval, quote image generation, and more.
For full interactive documentation and live API testing, visit quotes.rest.
Premium
/month
Enterprise
/month
| Feature | Most Popular Premium $9.99/mo | Ultra $24.99/mo | Enterprise $74.99/mo |
|---|---|---|---|
| Pricing | |||
| Monthly price | $9.99 | $24.99 | $74.99 |
| Rate limit | 2,500/day | 8,000/day | Unlimited |
| Quote of the Day | |||
| API access | |||
| Bulk retrieval | |||
| Custom-defined Quote of the Day | |||
| Total custom QOD definitions | 0 | 5 | 25 |
| Random Quotes & Search | |||
| API access | |||
| Bulk retrieval limit | 3 | 5 | 15 |
| Author Details | |||
| Popular author list | |||
| Search author names | |||
| Enhanced details (birthday, occupation…) | |||
| Private Quotes | |||
| API access | |||
| QShows (Quote Collections) | |||
| API access | |||
| Quotes per collection | 25 | 50 | 50 |
| Number of QShows | 25 | 50 | 250 |
| Quote Image Generation | |||
| API access | |||
| Custom fonts & background images | |||
| Remove They Said So® branding | |||
| Get Premium | Get Ultra | Get Enterprise | |
Million+ Quotes
Famous quotes across 500+ categories
Quote of the Day
Daily fresh quote in any category
JSON, XML & JSONP
Multiple response formats supported
Quote Images
Generate beautiful quote images via API
The base endpoint for all API calls when you subscribe directly from us:
https://quotes.rest/
Some endpoints are public and can be accessed without authentication (rate-limited to 10 calls/hour). For private endpoints and higher rate limits, set a request header:
Authorization: Bearer <your_api_key>
Alternatively, pass api_key=<key> as a query parameter — though this is discouraged as it exposes your key in server logs and browser history.
Choose your response format by appending the appropriate extension to the URL:
JSON
GET https://quotes.rest/qod.json
XML
GET https://quotes.rest/qod.xml
JSONP
GET https://quotes.rest/qod.js
The public API is rate-limited to 10 calls per hour. Subscribing to a paid plan increases your limit significantly:
| Plan | Calls / Day | Bulk Limit |
|---|---|---|
| Premium | 2,500 | 3 quotes |
| Ultra | 8,000 | 5 quotes |
| Enterprise | Unlimited | 15 quotes |
Get the Quote of the Day via REST API — inspiring, management, life, funny, and many more categories available. The same quote is returned for the full calendar day.
GET https://quotes.rest/qod?category=inspire
A successful response looks like:
{
"success": { "total": 1 },
"contents": {
"quotes": [
{
"quote": "The only way to do great work is to love what you do.",
"author": "Steve Jobs",
"length": "52",
"language": "en",
"tags": ["inspire","work"],
"id": "rkWseAMW3C9NlW-IHHZ1igeF",
"category": "inspire",
"date": "2026-08-04"
}
]
},
"copyright": {
"url": "https://theysaidso.com",
"year": "2026"
}
}
<?php
$apiKey = 'YOUR_API_KEY';
$url = 'https://quotes.rest/qod.json?category=inspire';
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
"X-TheySaidSo-Api-Secret: {$apiKey}",
],
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
$quote = $data['contents']['quotes'][0];
echo $quote['quote'] . ' — ' . $quote['author'];
To list all available QOD categories:
GET https://quotes.rest/qod/categories
Retrieve a random quote from the database. Filter by author, tag, or length. Use the limit parameter to get multiple quotes per call (up to your plan's bulk limit).
GET https://quotes.rest/quote/random.json?limit=1
A successful response looks like:
{
"success": { "total": 1 },
"contents": {
"quotes": [
{
"quote": "In the middle of every difficulty lies opportunity.",
"author": "Albert Einstein",
"length": "50",
"language": "en",
"tags": ["difficulty","opportunity"],
"id": "e4x7MLKW3C9NlW-IHZ1igeF"
}
]
},
"copyright": {
"url": "https://theysaidso.com",
"year": "2026"
}
}
<?php
$apiKey = 'YOUR_API_KEY';
$url = 'https://quotes.rest/quote/random.json?limit=1';
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["X-TheySaidSo-Api-Secret: {$apiKey}"],
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
$quote = $data['contents']['quotes'][0];
echo $quote['quote'] . ' — ' . $quote['author'];
Search quotes by author, tag, query string, or minimum/maximum length. The limit parameter controls how many results are returned (up to your plan's bulk limit).
GET https://quotes.rest/quote/search.json?query=courage&limit=3
The API sends Access-Control-Allow-Origin: * for all requests, allowing browser-side JavaScript to call the API directly. However, this exposes your API key in client-side code. We strongly recommend a server-side proxy for any public-facing application.
X-TheySaidSo-Api-Secret: <your_api_key> on every request. You can also pass api_key=<key> as a query parameter, but this is discouraged because the key appears in server logs and browser history. Get your API key after subscribing to a plan..json, .xml, or .js to the endpoint URL, or send a matching Accept header.limit parameter to /quote/random or /quote/search. The maximum depends on your plan: Premium 3 · Ultra 5 · Enterprise 15.Access-Control-Allow-Origin: * is set on every response. However, calling the API directly from browser JavaScript exposes your secret key. Use a server-side proxy to keep your key private in production.Subscribe to a plan and get your API key instantly. No contracts, cancel anytime.
View Plans