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
# Header
curl -H "x-api-key: YOUR_API_KEY" https://bestdogbox.com/api/v1/breeds

Endpoints

GET/breedsList all breeds

Returns a paginated list of all 346 dog breeds with filtering options.

Parameters

ParamTypeDescription
pageintPage number (default: 1)
limitintResults per page, max 50 (default: 50)
sizestringFilter by size: toy, small, medium, large, giant
groupstringFilter by AKC group (e.g. "sporting", "herding")
searchstringSearch breeds by name
GET /api/v1/breeds?size=large&limit=5&apikey=YOUR_KEY
GET/breeds/:slugGet single breed

Returns detailed data for a specific breed by its URL slug.

GET /api/v1/breeds/golden-retriever?apikey=YOUR_KEY
GET/breeds/compareCompare two breeds

Returns side-by-side data for two breeds.

ParamRequiredDescription
aYesFirst breed slug
bYesSecond breed slug
GET /api/v1/breeds/compare?a=golden-retriever&b=labrador-retriever&apikey=YOUR_KEY
GET/subscription-boxesTop ranked boxes

Returns top-ranked dog subscription boxes by composite score.

ParamTypeDescription
limitintNumber 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

PlanDaily LimitRatePrice
Registered1,000 requests/dayNo per-second limitFree

Rate limits reset daily at midnight UTC. Need higher limits? Contact hello@bestdogbox.com.

Error Codes

CodeMeaningWhat to Do
400Bad RequestCheck your parameters
401UnauthorizedMissing or invalid API key
403ForbiddenAPI key has been deactivated
404Not FoundBreed slug does not exist
429Rate LimitedWait until midnight UTC for reset
500Server ErrorTry 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"
  }
}