Animals — entry 006 of 20
Dogs
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.
GreatAPIs Score
Auth quickstart
- No API key required — requests are public and keyless.
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
{
"message": "https://images.dog.ceo/breeds/hound-ibizan/n02091244_2062.jpg",
"status": "success"
}Try it
Developer reference
https://dog.ceo/api- GET/breeds/list/all
- GET/breeds/image/random
- GET/breed/{breed}/images
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) andstatus(successorerror). There's no separatedatakey to look for. - The image itself lives on a different host,
images.dog.ceo, notdog.ceo— the API only ever returns a link to hotlink or download, never the image bytes. GET /breeds/list/allreturns 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/randomreturns HTTP 404 with{"status":"error","message":"Breed not found (main breed does not exist)","code":404}.