API Documentation
Access 188+ financial data products programmatically. Built for AI agents, developers, and data enthusiasts. Free to use (for now π).
Quick Start
All endpoints are public and require no authentication. CORS is enabled for browser requests.
# List all data products
curl https://kibble.shop/api/products
# Search for specific products
curl "https://kibble.shop/api/products?q=inflation"
# Get insider trading data
curl https://kibble.shop/api/insider-tradingBase URL
https://kibble.shop/apiAll endpoints are relative to this base URL.
Product Registry
/api/productsDiscover all available data products. This is the starting point for AI agents β query the registry to find datasets that match your needs.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| q | string | Search query β matches product name, description, slug, and tags |
| category | string | Filter by category (e.g., 'Banking & Credit', 'Commodities & Energy') |
| liveOnly | boolean | Only return products with live data (set to 'true') |
Example Request
curl "https://kibble.shop/api/products?q=insider&category=Corporate"import requests
response = requests.get(
"https://kibble.shop/api/products",
params={"q": "insider", "category": "Corporate"}
)
data = response.json()
print(f"Found {data['count']} products")Response
{
"count": 2,
"products": [
{
"slug": "insider-trading",
"name": "SEC Insider Trading",
"category": "Corporate & Markets",
"description": "Form 4 filings β insider buys, sells, and option exercises in real time.",
"tags": ["sec", "insider", "form4"],
"dataSource": "SEC EDGAR",
"hasLiveData": true
},
{
"slug": "failed-banks",
"name": "Failed Banks",
"category": "Banking & Credit",
"description": "FDIC bank failure data β when banks fail, what happens to deposits.",
"tags": ["fdic", "banking", "failure"],
"dataSource": "FDIC",
"hasLiveData": true
}
]
}Individual Product Data
Once you've discovered a product via /api/products, fetch its data from /api/{slug}.
slug field. Construct the data endpoint as /api/{slug} to fetch the full dataset.Available Endpoints
/api/insider-tradingβ SEC Form 4 insider trading data/api/failed-banksβ FDIC bank failure data/api/fear-greedβ CNN Fear & Greed Index/api/treasury-auctionsβ US Treasury auction results/api/yield-curveβ Treasury yield curve data/api/consumer-sentimentβ University of Michigan sentiment index/api/home-salesβ Housing sales data/api/economic-indicatorsβ Key macro indicatorsNote: This is a subset. Use /api/products to discover all 188+ available products.
Example: Insider Trading
/api/insider-tradingQuery Parameters
| Parameter | Type | Description |
|---|---|---|
| type | string | Filter by transaction type: 'purchase', 'sale', 'grant', 'exercise', or 'all' (default) |
| ticker | string | Filter by stock ticker (e.g., 'AAPL', 'TSLA') |
| search | string | Search across ticker, company name, and filer name |
| limit | integer | Number of results to return (default: 100, max: 500) |
Example Request
# Get recent insider purchases of AAPL
curl "https://kibble.shop/api/insider-trading?ticker=AAPL&type=purchase&limit=10"import requests
response = requests.get(
"https://kibble.shop/api/insider-trading",
params={
"ticker": "AAPL",
"type": "purchase",
"limit": 10
}
)
trades = response.json()
for trade in trades["data"]:
print(f"{trade['filerName']} bought {trade['shares']} shares")Response
{
"data": [
{
"ticker": "AAPL",
"companyName": "Apple Inc.",
"filerName": "Cook Timothy D",
"transactionType": "Purchase",
"shares": 50000,
"pricePerShare": 178.45,
"totalValue": 8922500,
"filingDate": "2024-02-10",
"transactionDate": "2024-02-08"
}
],
"meta": {
"total": 1247,
"filtered": 23,
"returned": 10,
"lastUpdated": "2024-02-15T14:30:00Z",
"source": "SEC EDGAR Form 4"
}
}Response Format
All endpoints return JSON. Most data endpoints follow this structure:
{
"data": [...], // Array of data records
"meta": {
"total": 1000, // Total records available
"filtered": 50, // Records after filtering
"returned": 50, // Records in this response
"lastUpdated": "2024-02-15T14:30:00Z",
"source": "Data source name"
}
}Rate Limits & Best Practices
- β’No rate limits currently. This is a free beta. Be reasonableβdon't hammer the API.
- β’Cache responses. Most data updates hourly (check
lastUpdatedin the response). - β’Use query params efficiently. Filter on the server rather than pulling full datasets.
- β’Respect CORS. Browser requests are allowed. Set appropriate headers if you encounter issues.
- β’Expect changes. This is v1 and evolving. We'll version breaking changes when we introduce paid tiers.
For AI Agents
kibble.shop is built with AI agents in mind. Here's how to use the API effectively:
1. Discover products
Start with /api/products to find datasets that match your task. Use the q parameter to search by keywords.
2. Fetch data
Once you have a slug, fetch the data from /api/{slug}. Check the meta object for freshness and source info.
3. Filter efficiently
Use query parameters to filter data server-side. Don't pull full datasets if you only need a subset.
4. Cite your sources
Each response includes meta.source. Use it to attribute data properly.
- User asks: βWhat are recent insider trades in tech stocks?β
- Agent queries:
/api/products?q=insider - Agent finds:
insider-tradingproduct - Agent fetches:
/api/insider-trading?type=purchase&limit=20 - Agent responds with formatted results + source attribution
Need Help?
Questions? Feedback? Found a bug?