API Online
BestDogBox API
Free REST API with 346 dog breeds, subscription box rankings, and breed comparison data. Built for developers, researchers, and pet app builders.
REST APIJSON Response1,000 req/dayFree Forever
Get Your API Key
Free registration. No credit card required. Takes 10 seconds.
Your API key will be displayed immediately. 1,000 requests/day included for free.
Base URL
https://bestdogbox.com/api/v1
Authentication
All requests require an API key. You can pass it as a query parameter or header:
# Query parameter
curl https://bestdogbox.com/api/v1/breeds?apikey=YOUR_API_KEY
curl https://bestdogbox.com/api/v1/breeds?apikey=YOUR_API_KEY
# Header
curl -H "x-api-key: YOUR_API_KEY" https://bestdogbox.com/api/v1/breeds
curl -H "x-api-key: YOUR_API_KEY" https://bestdogbox.com/api/v1/breeds
Endpoints
GET
/breedsList all breedsReturns a paginated list of all 346 dog breeds with filtering options.
Parameters
| Param | Type | Description |
|---|---|---|
| page | int | Page number (default: 1) |
| limit | int | Results per page, max 50 (default: 50) |
| size | string | Filter by size: toy, small, medium, large, giant |
| group | string | Filter by AKC group (e.g. "sporting", "herding") |
| search | string | Search breeds by name |
GET /api/v1/breeds?size=large&limit=5&apikey=YOUR_KEY
GET
/breeds/:slugGet single breedReturns detailed data for a specific breed by its URL slug.
GET /api/v1/breeds/golden-retriever?apikey=YOUR_KEY
GET
/breeds/compareCompare two breedsReturns side-by-side data for two breeds.
| Param | Required | Description |
|---|---|---|
| a | Yes | First breed slug |
| b | Yes | Second breed slug |
GET /api/v1/breeds/compare?a=golden-retriever&b=labrador-retriever&apikey=YOUR_KEY
GET
/subscription-boxesTop ranked boxesReturns top-ranked dog subscription boxes by composite score.
| Param | Type | Description |
|---|---|---|
| limit | int | Number of results, max 20 (default: 10) |
GET /api/v1/subscription-boxes?limit=5&apikey=YOUR_KEY
Code Examples
JavaScript / Node.js
const res = await fetch(
'https://bestdogbox.com/api/v1/breeds/golden-retriever',
{ headers: { 'x-api-key': 'YOUR_API_KEY' } }
);
const { data } = await res.json();
console.log(data.name, data.lifespan_min + '-' + data.lifespan_max, 'years');Python
import requests
res = requests.get(
'https://bestdogbox.com/api/v1/breeds',
params={'size': 'large', 'apikey': 'YOUR_API_KEY'}
)
breeds = res.json()['data']
for breed in breeds:
print(f"{breed['name']} — {breed['size']}")cURL
curl -H "x-api-key: YOUR_API_KEY" \ "https://bestdogbox.com/api/v1/breeds?size=small&limit=5"
Rate Limits
| Plan | Daily Limit | Rate | Price |
|---|---|---|---|
| Registered | 1,000 requests/day | No per-second limit | Free |
Rate limits reset daily at midnight UTC. Need higher limits? Contact hello@bestdogbox.com.
Error Codes
| Code | Meaning | What to Do |
|---|---|---|
| 400 | Bad Request | Check your parameters |
| 401 | Unauthorized | Missing or invalid API key |
| 403 | Forbidden | API key has been deactivated |
| 404 | Not Found | Breed slug does not exist |
| 429 | Rate Limited | Wait until midnight UTC for reset |
| 500 | Server Error | Try again later or contact us |
Response Format
All responses follow the same structure:
{
"data": { ... }, // Breed object or array
"pagination": { // Only on list endpoints
"page": 1,
"limit": 50,
"total": 346,
"total_pages": 7
},
"meta": {
"source": "BestDogBox.com",
"docs": "https://bestdogbox.com/developers"
}
}