BillionGraves Scraper avatar

BillionGraves Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
BillionGraves Scraper

BillionGraves Scraper

Scrape BillionGraves.com - 71M+ crowd-sourced GPS-tagged grave photos plus Veteran, SSDI, and other genealogy record collections. Search by name across 10 record collections, or browse every record photographed in a specific cemetery.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

0

Monthly active users

19 days ago

Last modified

Share

Scrape BillionGraves.com — the world's largest GPS-linked cemetery database, with 71M+ crowd-sourced grave photos plus U.S. Veteran Burial Records, the Social Security Death Index, and other genealogy record collections. Search by name across 10 record collections, or browse every record photographed in a specific cemetery. No login, no API key, no cookies required.

What this actor does

  • Three modes: search (name search across 10 collections), byCemetery (browse a full cemetery), and searchCemeteries (find cemeteries by name, with GPS/address/record-count details)
  • 10 record collections: GPS Headstones, Veteran Burial Records, Social Security Death Index, and more
  • Filters: birth year range, death year range, state/region, country
  • GPS coordinates: latitude/longitude included for photographed headstones and for cemeteries
  • Military service data: branch, rank, conflict, and unit for veteran records
  • Empty fields are omitted — every record only contains data BillionGraves actually returned

Output fields

Grave records (search / byCemetery modes):

  • recordId, sourceUrl, thumbnailUrl
  • fullName, givenNames, familyNames, maidenNames
  • birthDate, deathDate, marriageDate
  • city, county, state, country
  • cemeteryId, cemeteryName, cemeteryUrl
  • latitude, longitude (GPS Headstones collection)
  • militaryBranch, militaryRank, militaryConflict, militaryUnit (Veteran records)
  • collectionId, collectionTitle
  • createdAt
  • recordType, scrapedAt

Cemetery records (searchCemeteries mode):

  • cemeteryId, cemeteryName, cemeteryUrl
  • recordCount, mediaCount, curatorCount
  • latitude, longitude, cemeteryRadiusMeters
  • address, city, county, state, country, postalCode
  • website, description
  • recordType, scrapedAt

Input

FieldTypeDefaultDescription
modestringsearchsearch / byCemetery / searchCemeteries
familyNamesstringSmithSurname to search for (mode=search)
givenNamesstringFirst/given name to search for
maidenNamesstringMaiden name to search for
collectionIdstring1One of 10 record collections
birthYearMin / birthYearMaxintegerBirth year range
deathYearMin / deathYearMaxintegerDeath year range
statestringState/region filter (search, searchCemeteries)
countrystringCountry filter (search, searchCemeteries)
cemeteryIdintegerCemetery ID (mode=byCemetery)
cemeteryNamestringCosmetic label for output (mode=byCemetery)
cemeteryNameQuerystringCemetery name to search for (mode=searchCemeteries) — returns the cemeteryId you can feed into byCemetery
maxItemsinteger30Hard cap on emitted records (1-500)

Example: search for a surname in a date range

{
"mode": "search",
"familyNames": "Johnson",
"birthYearMin": 1850,
"birthYearMax": 1920,
"maxItems": 50
}

Example: search Veteran Burial Records

{
"mode": "search",
"familyNames": "Smith",
"collectionId": "2",
"state": "New York",
"maxItems": 30
}

Example: browse every record in a cemetery

{
"mode": "byCemetery",
"cemeteryId": 107742,
"cemeteryName": "Kaysville City Cemetery",
"maxItems": 100
}

Example: find a cemetery's ID by name

{
"mode": "searchCemeteries",
"cemeteryNameQuery": "Fort Sam Houston",
"state": "Texas",
"maxItems": 20
}

Use cases

  • Genealogy research — find ancestors' burial locations, dates, and GPS coordinates
  • Military history — trace a veteran's service branch, rank, and conflict from their grave record
  • Cemetery documentation — export a full photographed cemetery's roster
  • Family tree building — cross-reference maiden names and family plots
  • Historical demographic research — analyze birth/death year distributions by region

FAQ

Do I need a BillionGraves account? No. Every mode uses BillionGraves' own public, unauthenticated search API — the same one the billiongraves.com website itself calls from your browser.

Why do some collections have SubscriptionMask restrictions on the website but work here? BillionGraves' public search endpoint returns the same free-to-view search-result snippet (name, dates, location) for every collection without requiring login — this actor surfaces exactly that public data. Full record detail pages on billiongraves.com may prompt for a subscription for some collections; this actor does not access or require that.

Why do only some records have latitude/longitude? GPS coordinates are captured by the BillionGraves mobile app when a volunteer photographs a headstone (Collection 1). Records sourced from indexed documents (SSDI, obituaries, historical records) don't have GPS data.

Can I search without a surname? Yes — givenNames or maidenNames alone also work, but a surname typically narrows results the most.

Why does byCemetery mode sometimes take longer, or occasionally fail, on huge cemeteries? Very large cemeteries (100,000+ photographed graves, e.g. major national cemeteries) can take BillionGraves' own server 30-60+ seconds to paginate, and their infrastructure occasionally times out (504) on these specific large aggregations regardless of client-side retries. The actor retries automatically, and this affects only a small number of exceptionally large cemeteries — the vast majority of BillionGraves' cemeteries (which have a few hundred to a few thousand records) respond in 1-3 seconds.

How fresh is the data? Live — every request hits BillionGraves' production API directly, so results reflect the database at the moment the actor runs.

Why does sourceUrl/thumbnailUrl occasionally 404/410 for a record? BillionGraves' search index is a snapshot that isn't always in perfect sync with the live site — a small fraction of older, crowd-sourced photo records (roughly 1 in 5 for some very common-name searches, in our testing) have since been deleted or unpublished by the volunteer who uploaded them, but the search index entry remains. There's no field in BillionGraves' own API response that reliably predicts this in advance, so the actor can't filter these out before emitting the record — the name/date/location/GPS fields for these records are still accurate at the time of the search, only the individual detail page or photo may since be gone.

Why did my search return fewer records than maxItems? BillionGraves' own search ranks by relevance rather than filtering strictly — for a common surname, only the first page or two of results are strong matches, after which the underlying API broadens into loosely-related records. This actor strictly re-checks every name/year/location filter you set before emitting a record, and stops early once several consecutive pages produce no further matches, rather than emitting weakly-related records just to hit maxItems. Try a more distinctive name/maiden-name combination, or a different collectionId, to pull a larger result set.