Animals — entry 006 of 20

Dogs

Verified Jul 2026

The Dog CEO API serves random and breed-filtered dog images sourced from the Stanford Dogs Dataset plus community submissions, returning a direct image URL as JSON rather than the binary file itself. A live call to its breed list returns 108 main breeds and 99 named sub-breeds (42 of the mains have sub-breeds), giving 207 callable breed image paths across 165 leaf-level breed collections, each queryable via dedicated endpoints (e.g. /breed/hound/images/random), and it needs no signup or API key. The project is open-source with no pricing tier of any kind; hosting is covered by on-site ads plus voluntary PayPal donations.

Dog CEO serves random and breed-filtered dog images sourced from the Stanford Dogs Dataset plus community submissions, returning a direct image URL as JSON rather than the binary file itself. A live call to /breeds/list/all returns 108 main breeds and 99 named sub-breeds (42 of the mains have sub-breeds), giving 207 callable breed image paths across 165 leaf-level breed collections. It needs no signup or API key, and hosting is covered by on-site ads plus voluntary PayPal donations rather than any paid tier.

dog-imagesdog-breedsopen-sourcekeyless
AuthenticationNone requiredCall it straight away — no key, no signup.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score88out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs14/20Documentation URL provided
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 88 on greatapis.com
<a href="https://greatapis.com/api/dogs/"><img src="https://greatapis.com/badge/dogs.svg" alt="Scored 88 on greatapis.com"></a>

Auth quickstart

  1. No API key required — requests are public and keyless.
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Get a random dog image

GEThttps://dog.ceo/api/breeds/image/random

200 application/json

{
  "message": "https://images.dog.ceo/breeds/hound-ibizan/n02091244_2062.jpg",
  "status": "success"
}

Developer reference

Base URLhttps://dog.ceo/api

Gotchas & limits

  • Every response — success or error — wraps its payload in the same two-field shape: `message` (a URL, an array of URLs, or an error string depending on the endpoint) and `status` (`success` or `error`). There's no separate `data` key to look for.
  • The image itself lives on a different host, `images.dog.ceo`, not `dog.ceo` — the API only ever returns a link to hotlink or download, never the image bytes.
  • `GET /breeds/list/all` returns breeds with sub-breeds as an object mapping each breed to an array of its sub-breeds (e.g. `"bulldog": ["boston", "english", "french"]`) — to fetch a sub-breed's image, chain it into the path as `/breed/{breed}/{subbreed}/images/random`, confirmed live with `/breed/bulldog/french/images/random`.
  • An unknown breed doesn't 200 with an empty result — confirmed live, `/breed/nonexistentbreed/images/random` returns HTTP 404 with `{"status":"error","message":"Breed not found (main breed does not exist)","code":404}`.