Discover/FamilySearch API
live

FamilySearch APIfamilysearch.org

Search over a billion ancestor profiles on FamilySearch. Query records by surname, birth year, and place. List all genealogy collections with metadata.

Endpoint health
verified 3h ago
list_collections
search_records
2/2 passing latest checkself-healing
Endpoints
2
Updated
3h ago

What is the FamilySearch API?

The FamilySearch API exposes 2 endpoints for querying genealogy records and collections from one of the largest publicly available ancestry databases, which contains over a billion submitted family tree profiles. The search_records endpoint accepts surname, given name, birth year, and birth place filters, returning person records with family relationships, dates, and source collection. The list_collections endpoint returns metadata for every available collection including data quality ratings.

Try it
Number of results per page (max 100).
Offset for pagination (0-based).
Last name / surname to search for.
Birth year to filter by (4-digit year, e.g. 1850).
First name / given name to search for.
Place of birth to filter by (city, county, state, province, or country).
api.parse.bot/scraper/f0d068b6-38a8-488f-aca6-e8e0565f351e/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/f0d068b6-38a8-488f-aca6-e8e0565f351e/search_records?count=5&offset=0&surname=Smith&birth_year=1850&given_name=John&birth_place=England' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace familysearch-org-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.


"""Walkthrough: FamilySearch Genealogies SDK — search ancestors, browse collections."""
from parse_apis.familysearch_org_api import FamilySearch, NotFoundError

client = FamilySearch()

# Search genealogy records by surname and given name
for record in client.records.search(surname="Smith", given_name="John", limit=3):
    print(record.name, record.birth_date, record.birth_place)

# Narrow search with birth place filter
record = client.records.search(
    surname="Johnson", given_name="Mary", birth_place="England", birth_year="1850", limit=1
).first()
if record:
    print(record.name, record.gender, record.birth_date, record.birth_place)
    print("Spouses:", record.spouses)
    print("Children:", record.children)

# List all available genealogy collections
for coll in client.collections.list(limit=5):
    print(coll.title, coll.data_quality, coll.modified)

# Handle typed errors
try:
    results = client.records.search(surname="Xyzzyplugh99", limit=1).first()
    print("Found:", results.name if results else "No results")
except NotFoundError as exc:
    print(f"Search failed: {exc}")

print("exercised: records.search / collections.list")
All endpoints · 2 totalmissing one? ·

Search genealogy records by surname and optional filters. Returns paginated person records from FamilySearch's shared genealogies database, which includes submitted family trees from multiple collections (Pedigree Resource File, Ancestral File, IGI, Oral Genealogies, etc.). Each result includes the person's name, gender, birth/death dates and places, and related family members (spouses, parents, children). Results are ordered by relevance.

Input
ParamTypeDescription
countintegerNumber of results per page (max 100).
offsetintegerOffset for pagination (0-based).
surnamerequiredstringLast name / surname to search for.
birth_yearstringBirth year to filter by (4-digit year, e.g. 1850).
given_namestringFirst name / given name to search for.
birth_placestringPlace of birth to filter by (city, county, state, province, or country).
Response
{
  "type": "object",
  "fields": {
    "count": "integer",
    "offset": "integer",
    "records": "array of person records with id, name, gender, birth_date, birth_place, death_date, death_place, collection, spouses, parents, children",
    "total_results": "integer"
  },
  "sample": {
    "data": {
      "count": 2,
      "offset": 0,
      "records": [
        {
          "id": "ark:/61903/2:4:62LH-DWMZ",
          "name": "John Smith",
          "gender": "Male",
          "parents": [],
          "spouses": [
            "Esther Smith"
          ],
          "children": [
            "Nakonu Smith",
            "James Smith",
            "Betty Smith"
          ],
          "birth_date": "about 1877",
          "collection": "Entry for John Smith, \"Africa, Oral Genealogy, 1500-2022\"",
          "death_date": "",
          "birth_place": "Taye Town, District #2, Grand Bassa, Liberia",
          "death_place": ""
        },
        {
          "id": "M94T-YLG",
          "name": "Mary Maria Johnson",
          "gender": "Female",
          "parents": [],
          "spouses": [],
          "children": [],
          "birth_date": "about 1848",
          "collection": "Partner Trees",
          "death_date": "",
          "birth_place": "Audley, Staffordshire, England, United Kingdom",
          "death_place": ""
        }
      ],
      "total_results": 1088160
    },
    "status": "success"
  }
}

About the FamilySearch API

Searching Genealogy Records

The search_records endpoint takes a required surname parameter and accepts optional filters for given_name, birth_year, and birth_place. Results are paginated via offset and count (up to 100 per page), and the response includes total_results so you can iterate through large result sets. Each person record carries id, name, gender, birth_date, birth_place, death_date, death_place, collection, plus arrays for spouses, parents, and children — giving you enough relational context to reconstruct family units without additional lookups.

Collections and Data Quality

The list_collections endpoint requires no parameters and returns all available genealogy collections with fields including id, title, description, persistent_id, data_quality, created, and modified. Named collections include the Pedigree Resource File, Ancestral File, International Genealogical Index (IGI), and Oral Genealogies. The data_quality field is particularly useful when you need to assess the reliability of records before relying on them in downstream applications.

Coverage and Scope

Records span multiple contributed collections, so coverage varies by region, time period, and contributor. The birth_place parameter accepts city, county, state, province, or country — giving you geographic granularity when searching. Since data originates from submitted family trees across different collections, the same individual may appear in multiple records with varying levels of detail.

Reliability & maintenanceVerified

The FamilySearch API is a managed, monitored endpoint for familysearch.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when familysearch.org changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official familysearch.org API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
3h ago
Latest check
2/2 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a surname distribution tool using birth_place field data across paginated search_records results
  • Cross-reference submitted family trees by querying spouses and parents arrays to map multi-generational lineages
  • Filter records by birth_year and birth_place to study migration patterns for a specific ethnic or regional group
  • Enumerate all collections via list_collections and surface data_quality ratings to guide users toward higher-confidence sources
  • Aggregate death_date and death_place fields to build historical mortality datasets by geography
  • Index ancestor profiles by collection field to compare data coverage across Pedigree Resource File vs. IGI records
  • Build a family reunion tool that reconstructs family units using children, parents, and spouses relationship arrays
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does FamilySearch have an official developer API?+
Yes. FamilySearch offers an official developer platform at https://www.familysearch.org/developers/. It requires registration, OAuth authentication, and approval for access to certain record types. The Parse API provides access to public genealogy data without that setup overhead.
What does the `search_records` endpoint return for each person?+
Each record includes id, name, gender, birth_date, birth_place, death_date, death_place, and collection. It also includes arrays for spouses, parents, and children, allowing you to trace family relationships directly from a single search result.
Can I retrieve a specific person's full record by their FamilySearch ID?+
Not currently. The API covers surname-based search with optional name and birth filters, and collection metadata via list_collections. You can fork it on Parse and revise to add an endpoint that fetches a person record by a specific id.
How does pagination work in `search_records`?+
Pagination uses offset (0-based) and count (max 100). The response always includes total_results, so you can calculate how many pages exist and walk through results programmatically using repeated calls with incremented offset values.
Does the API expose DNA matches or user-contributed source citations?+
No. The API covers person records with biographical fields and family relationships, plus collection-level metadata. DNA match data and source citations are not included in the current response shapes. You can fork it on Parse and revise to add endpoints targeting those data types.
Page content last updated . Spec covers 2 endpoints from familysearch.org.
Related APIs in Government PublicSee all →
api.nasa.gov API
Access NASA's suite of open data APIs — including the Astronomy Picture of the Day, Near Earth Object tracking, DONKI space weather events, EPIC Earth imagery, Mars weather, the NASA Image and Video Library, the Exoplanet Archive, and EONET natural events.
sec.gov API
Search for publicly traded companies and instantly access their SEC filings with details like filing type, date, description, and accession numbers. Find the regulatory documents you need to research company financial information and compliance records.
usaspending.gov API
usaspending.gov API
companieshouse.gov.uk API
Search for UK companies and officers, then access detailed information including company profiles, filing history, charges, and officers with significant control. Get comprehensive corporate records and appointment details all in one place.
mars.nasa.gov API
Explore real-time images, weather data, and location tracking from NASA's Perseverance and Curiosity rovers on Mars, while discovering mission details, rock sample findings, and the latest news from the Mars Exploration Program. Access rover photos, scientific discoveries, and multimedia content to stay updated on current Mars exploration activities.
find-and-update.company-information.service.gov.uk API
Search and access detailed information about UK companies registered at Companies House, including company profiles, filing histories, officers, and financial charges. Filter companies by name, status, type, SIC code, and more.
capitol.texas.gov API
Search and monitor Texas Legislature bills, track their progress through legislative stages, and retrieve detailed action histories. Look up legislator contact information, district details, committee assignments, and full committee membership rosters.
open.fda.gov API
Search FDA food recall and enforcement actions to find safety information about specific products or manufacturers, and look up adverse events reported to the CFSAN Adverse Event Reporting System (CAERS). Filter, sort, and aggregate data by various fields to analyze food safety trends and monitor enforcement activity.