Public API
Free, read-only, no API key. Use it to cite, chart, or embed CarnivoreCount's numbers.
All endpoints are public JSON (or CSV, on request) with no authentication. They're rate-limited per IP to keep the service fast for everyone - if you're building something that needs a higher volume of requests, reach out via the link in the footer.
A note on the data: every count here comes from a self-reported, opt-in signup - it is not a census. Treat it as a directional signal of the carnivore diet's growth, not a scientifically sampled population statistic.
This API is free - no key, no billing, no catch. If you use it in an article, app, or research, a mention or a backlink to carnivorecount.com is appreciated - it helps other carnivores find us.
GET/api/trends/
Daily carnivore counts over time - global, for a single country, or broken down by region within a country.
| Param | Values | Default | Notes |
|---|---|---|---|
level | global / country / region | global | country is required for country and region levels. |
country | ISO 3166-1 alpha-2, e.g. US | - | Required when level is country or region. |
range | 30d / 90d / all | all | Clamped to the earliest date data actually exists. |
top | integer | 8 | level=region only - how many regions to break out before folding the rest into "Other". |
format | json / csv | json | csv returns a long-format date,series_key,series_label,count file. |
Example: global trend, last 90 days
GET /api/trends/?range=90d
{
"success": true,
"level": "global",
"range": "90d",
"start_date": "2026-04-17",
"end_date": "2026-07-16",
"series": [
{ "key": "global", "label": "Global", "data": [{ "date": "2026-04-17", "count": 812 }, ...] }
],
"growth": { "absolute": 96, "percent": 13.4 }
}
Example: CSV export for a country
GET /api/trends/?level=country&country=US&format=csv
GET/api/regions/
States/provinces available for a country - powers the cascading dropdowns on signup, but also useful if you just want the list.
| Param | Values | Notes |
|---|---|---|
country | ISO 3166-1 alpha-2 | Required. Unknown/blank codes return an empty list, not an error. |
GET /api/regions/?country=US
{
"success": true,
"country": "US",
"regions": [{ "code": "US-CA", "name": "California" }, ...]
}
Rate limits
60 requests/minute per IP on both endpoints above. Exceeding it returns HTTP 429 with {"success": false, "message": "..."}.