Adoptable pets feed format

One small file at a fixed web address, replaced once a day, lets anyone list a shelter's adoptable pets and send people back to the shelter to adopt. This is the format NC Pet Project reads and publishes.

The basics

  • One JSON file in UTF-8 at a fixed address, for example https://yourshelter.org/adoptable-pets.json, replaced at least once a day.
  • It lists every pet available for adoption right now. A pet that is adopted or no longer available simply drops off the next file.
  • No login, key or cookie needed to read it. Anyone can read it, so leave out anything private, such as finder or owner details.
  • Our combined copy, at /adopt/feed.json, holds one of these per shelter in a list called shelters.

The file

FieldTypeRequiredWhat it holds
formattextYesAlways "ncpet-adoptable-pets".
versiontextYes"1.0" for this version.
shelterobjectYesWho publishes the list (fields below).
updated_atdate and timeYesWhen the file was made, ISO 8601 with a time zone, for example 2026-10-16T05:30:00-04:00.
animalslistYesEvery pet available for adoption right now, including pets in foster homes. An empty list means no pets, not an error.

The shelter

FieldTypeRequiredWhat it holds
nametextYesThe shelter or rescue name people know.
countytextYesThe North Carolina county it serves, without the word County, for example Wake.
adopt_urlweb addressYesThe page that explains how to adopt.
phonetextNoA phone number for adoption questions.

Each pet

FieldTypeRequiredWhat it holds
idtextYesYour own ID for the pet. It stays the same while the pet is listed.
nametextYesThe pet's name.
speciestextYes"Dog", "Cat" or "Other".
breedtext or nullNoMain breed, as you list it.
breedslist of textNoEvery breed you list, main breed first.
sextext or nullNo"Male" or "Female".
age_texttext or nullNoAge as you would say it, for example "2 years" or "8 weeks".
age_grouptext or nullNo"Baby" (under 1 year), "Young" (1 to 3 years), "Adult" (3 to 8 years) or "Senior" (8 years and up).
age_daysnumber or nullNoApproximate age in days, for sorting.
weight_lbsnumber or nullNoWeight in pounds.
sizetext or nullNo"Small", "Medium", "Large" or "Extra large".
locationtext or nullNo"Shelter" or "Foster".
pendingtrue or falseYestrue once someone has started adopting this pet.
holdtrue or falseNotrue while the pet is on a stray hold and cannot be adopted yet. Leave it out, or use false, for pets ready to adopt. Tools that show adoptable pets can hide pets with hold set to true.
listed_sincedate or nullNoThe day the pet came in or became available, as YYYY-MM-DD.
photo_urlweb address or nullNoOne photo, at least 400 pixels on its short side.
urlweb addressYesThe pet's own page on your site, where people start the adoption.

Our combined copy

FieldTypeRequiredWhat it holds
formattextYesAlways "ncpet-adoptable-pets".
versiontextYes"1.0" for this version.
specweb addressYesThis page.
generated_atdate and timeYesWhen we made the combined file, ISO 8601 in UTC.
shelterslistYesOne entry per shelter, each with shelter, updated_at, ok and animals.
shelters[].updated_atdate and time or nullYesWhen we last read that shelter's list successfully. null means we have not read it yet, and its animals list is empty.
shelters[].oktrue or falseYesfalse when our latest read of that shelter did not go through. Its animals are then from the last good read, dated by updated_at.

Example

{
  "format": "ncpet-adoptable-pets",
  "version": "1.0",
  "shelter": {
    "name": "Example County Animal Services",
    "county": "Wake",
    "adopt_url": "https://example.org/adopt",
    "phone": "919-555-0100"
  },
  "updated_at": "2026-10-16T05:30:00-04:00",
  "animals": [
    {
      "id": "A123456",
      "name": "Biscuit",
      "species": "Dog",
      "breed": "Labrador Retriever",
      "breeds": [
        "Labrador Retriever",
        "Hound"
      ],
      "sex": "Female",
      "age_text": "2 years",
      "age_group": "Young",
      "age_days": 730,
      "weight_lbs": 48,
      "size": "Medium",
      "location": "Foster",
      "pending": false,
      "listed_since": "2026-09-30",
      "photo_url": "https://example.org/photos/A123456.jpg",
      "url": "https://example.org/adopt/A123456"
    }
  ]
}

Send us your feed

Email the address of your file to info@ncpetproject.org. We read it once a day and link every pet back to your own page.