Best Friends Animal Society Scraper
Pricing
from $3.00 / 1,000 results
Best Friends Animal Society Scraper
Scrape adoptable pets from Best Friends Animal Society (bestfriends.org) - the largest US animal-welfare organization. Browse adoptable dogs and cats by location, search by name, or fetch individual pet profiles with full metadata, photos, and adoption links.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Scrape Best Friends Animal Society (bestfriends.org) — the largest animal-welfare organization in the United States. Browse adoptable dogs and cats at any of the five Best Friends adoption centers, search adoptable pets by name across all locations, or fetch individual pet profiles with full metadata, photo galleries, and adoption links. Pure HTTP (SSR Drupal site). No auth, no API key, no proxy required.
What this actor does
- Four modes:
byLocation,search,byIds,byUrls - Five adoption centers: Salt Lake City, Los Angeles, New York City, Houston, Northwest Arkansas
- Filters: species (Dog / Cat), age (Baby / Young / Adult / Senior), sex, size (Small / Medium / Large / X-Large)
- Sorting: A–Z, newest arrivals, longest stay, featured
- Full profiles: name, species, breeds, birthdate, color, size, status, description, photo gallery, shelter adoption link
- Typed error records for unresolvable IDs / URLs (recordType
error) - Empty fields are omitted
Data Source
This actor is a replacement for the slot originally occupied by the RescueGroups (rescuegroups.org) scraper.
- Original slot: RescueGroups (rescuegroups.org). Its API requires a registration API key — requests without a key return
401 Unauthorized. That violates the free-plan constraint (no actor may require user-supplied credentials), so the slot was replaced. - Replacement: Best Friends Animal Society (bestfriends.org) — the largest US animal-welfare organization, in the same pet-adoption category.
- Data tier: the site is a server-side-rendered Drupal 11 application; listing pages (
/<location>/adopt/adoptable-pets) and animal profile pages (/<location>/adopt/<id>/<slug>) are plain SSR HTML that resolves from datacenter IPs. - Proxy behavior: none required; works with no proxy.
proxyConfigurationis intentionally not required. Requests retry with exponential backoff and rotate user agents on 403/429. - Images are served from
available-animals.bestfriends.org(S3/CloudFront) and resolve withHTTP 200from a clean public client — no Referer header, cookies, or signing required.
Output per animal
animalId— Best Friends animal ID (numeric, from the profile URL)name— pet namespecies— Dog / Cat / Bird / etc. (from the profile's "looks like" label)primaryBreed,secondaryBreed— breed(s), e.g.Terrier, Pit Bull+Mixage— Baby / Young / Adult / SeniorbirthDate— estimated birthdate (ISOYYYY-MM-DD, when published)sex— Male / Femalecolor— coat colorsize— Small / Medium / Large / X-Large (when published)location— adoption center slug (e.g.salt-lake-city)status— e.g. "In foster", "I'm at a local event; come say hello."description— full adoption description textimageUrl,imageUrls[]— profile photo + gallery (up to 10)adoptUrl— shelter adoption-survey linksourceUrl— canonical profile URLrecordType: "animal",scrapedAt
When Fetch full profile details is off, records contain card-level fields only: animalId, name, location, status, imageUrl, primaryBreed, secondaryBreed, age, sex, sourceUrl.
Error records
Unresolvable IDs / URLs emit a typed record with recordType: "error", the failed sourceUrl (or animalId), and an error message. Normal records never contain those fields.
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | byLocation | byLocation / search / byIds / byUrls |
location | string | salt-lake-city | Adoption center (mode=byLocation, mode=byIds) |
searchQuery | string | – | Pet name or partial name (mode=search; also narrows mode=byLocation) |
animalIds | array | – | Numeric animal IDs, e.g. 214192932 (mode=byIds) |
startUrls | array | – | Profile URLs, e.g. https://bestfriends.org/salt-lake-city/adopt/214157435/amaranth (mode=byUrls) |
species | string | All | Dog / Cat |
age | string | All | Baby / Young / Adult / Senior |
sex | string | All | Female / Male |
size | string | All | Small / Medium / Large / X-Large |
sortBy | string | title | title / newest / longestStay / featured |
enrichDetails | boolean | true | Fetch each pet's full profile page |
maxItems | int | 50 | Hard cap (1–1000) |
Example: senior dogs in Los Angeles, longest stay first
{"mode": "byLocation","location": "los-angeles","species": "Dog","age": "Senior","sortBy": "longestStay","maxItems": 20}
Example: name search across all locations
{"mode": "search","searchQuery": "amaranth","species": "Cat","maxItems": 10}
Example: lookup by animal ID
{"mode": "byIds","location": "salt-lake-city","animalIds": ["214192932", "214157435"]}
Example: fetch from profile URLs
{"mode": "byUrls","startUrls": [{ "url": "https://bestfriends.org/salt-lake-city/adopt/214157435/amaranth" },{ "url": "https://bestfriends.org/houston/adopt/213734892/scampi" }]}
Use cases
- Adoption agencies & rescues — monitor adoptable inventory at Best Friends centers for transfer opportunities
- Pet marketplaces — syndicate live adoptable listings into adoption feeds
- Animal-welfare research — analyze breed / age / stay-duration patterns across the largest US shelter network
- Nonprofit dashboards — daily snapshots of available pets per location for advocacy reporting
- Content teams — pull names, photos, and bios for adoption-promotion campaigns
FAQ
What is the data source? Best Friends Animal Society's public website (bestfriends.org), a server-side-rendered Drupal site. No API key or registration is required.
Why is this actor replacing "RescueGroups"?
The RescueGroups API requires a registered API key — without it every request returns 401 Unauthorized. Best Friends publishes the same category of data (adoptable pets) with zero credentials required.
How fresh is the data? Live. Every run fetches the current pages directly; the actor never caches listings.
How many locations are covered?
Five Best Friends adoption centers: Salt Lake City (UT), Los Angeles (CA), New York City (NY), Houston (TX), and Northwest Arkansas. Best Friends Sanctuary (Kanab, UT) animals can be fetched by URL or ID from startUrls, but the sanctuary has no filterable listing page.
What do the filter dropdowns mean?
species, age, sex, and size map 1:1 to Best Friends' own listing filters. sortBy maps to the site's sort options (A–Z, newest arrivals, longest stay, featured).
Why are some fields sometimes missing (e.g. size, birthdate)?
Best Friends only publishes certain fields (size, birthdate, description) on some profiles. Missing fields are omitted from the record entirely — no null placeholders.
Why don't I see species when profile enrichment is off? Listing cards do not carry the species marker; species is only available from the profile page. Enable Fetch full profile details to include it.
Are the photo URLs accessible?
Yes. Images are served from an S3/CloudFront CDN and return HTTP 200 from any public client with no special headers.
Is this affiliated with Best Friends Animal Society? No. This is an independent third-party actor that reads publicly available data from their website.
What happens if the site rate-limits me? The actor retries with exponential backoff and rotates user agents on 403/429 responses; persistent failures surface as typed error records instead of crashing.