Skip to main content

Simple GEDCOM Parser

A simplified Python library for extracting genealogy data from GEDCOM files:

  1. Extract basic person data - Get a list of people with vital information
  2. Extract sources - Get lists of documentary sources
  3. Extract pedigree - Get direct ancestors

Features

  • Parse GEDCOM 5.5 files
  • Extract person data: names, birth/death dates and places, parents
  • Flexible person data options: basic, extended (suffix, gender, status), or with marriages
  • Extract marriage data: spouses, marriage dates, and family IDs
  • Extract source citations linked to individuals
  • Extract pedigree
  • Simple, clean API designed for data analysis and writing to csv files

Quick Start

# Read a GEDCOM file and write lists to CSV files
from simple_gedcom import load_gedcom

gedcom = load_gedcom('data/tree.ged')

gedcom.save_person_list_to_csv()
gedcom.save_person_list_to_csv(extended=True)
gedcom.save_person_list_to_csv(marriages=True)
gedcom.save_person_list_to_csv(extended=True, marriages=True)

gedcom.save_pedigree_to_csv()

gedcom.save_source_list_to_csv()

gedcom.save_person_source_list_to_csv()

# pedigree analytics
pedigree = gedcom.get_pedigree()

gedcom.show_generation_counts(pedigree) 

gedcom.show_pedigree_duplicates(pedigree) 

# Use pandas to display lists
import pandas as pd

# Basic person list
person_list = gedcom.get_person_list()

# With extended fields (suffix, gender, status)
person_list = gedcom.get_person_list(extended=True)

# With marriage columns (spouse names, marriage dates, family IDs)
person_list = gedcom.get_person_list(marriages=True)

# Combined
person_list = gedcom.get_person_list(extended=True, marriages=True)

df_person_list = pd.DataFrame(person_list)
print(df_person_list.head())

sources = gedcom.get_source_list()
df_sources = pd.DataFrame(sources)
print(df_sources.head()) 

person_sources = gedcom.get_person_source_list()
df_person_sources = pd.DataFrame(person_sources)
print(df_person_sources.head())

pedigree = gedcom.get_pedigree()
df_pedigree = pd.DataFrame(pedigree)
print(df_pedigree.head())

# Search by name
found = gedcom.find_persons_by_name(first_name="Theodore")
df_found = pd.DataFrame(found)
print(df_found.head())

# Show the pedigree for a specific person (by ID)
pedigree = gedcom.get_pedigree("@I162694122750@")
df_pedigree = pd.DataFrame(pedigree)
print(df_pedigree.head())

Requirements

  • Python 3.6+
  • No external dependencies for core functionality
  • pandas (optional, for DataFrame examples)

License

This project is licensed under the GNU General Public License v2.0 - see the LICENSE file for details.

Attribution

This project is derived from python-gedcom by Nicklas Reincke and contributors. The original project provided the foundation for GEDCOM parsing, which has been simplified and focused for specific genealogy data extraction use cases.

Original Copyright (C) 2018-2019 Nicklas Reincke and contributors
Simplified version Copyright (C) 2025 [mcobtechnology]

Contributing

This is a simplified, focused library. If you need additional GEDCOM functionality, consider using the full-featured python-gedcom library.

For bug fixes and improvements to the core functionality, feel free to open issues or submit pull requests.

Metadata

Release files for simple-gedcom 1.0.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for simple-gedcom 1.0.9
File Size Uploaded
simple_gedcom-1.0.9.tar.gz 24.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for simple-gedcom 1.0.9
File Interpreter ABI Platform
simple_gedcom-1.0.9-py3-none-any.whl Python 3 none any Details

Total release size: 56.8 kB

Release files / simple_gedcom-1.0.9.tar.gz

Download URL simple_gedcom-1.0.9.tar.gz
Size 24.7 kB
Tags Source
SHA-256 checksum
How to use checksums
9c24fd5e4e952c7f8e618497961a28460680ab8d46e45523ca80567e1f9b1ab9
BLAKE2b-256 checksum
How to use checksums
07aae93df8aa2a77c94a8925ab1af6038b3fa3a2818d4490231a8df3bfdc58b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.10

Release files / simple_gedcom-1.0.9-py3-none-any.whl

Download URL simple_gedcom-1.0.9-py3-none-any.whl
Size 32.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
45ff4f5de87a11163a948dfa4c9f97e35fd648e8dcaf7001d03412f87de71a9d
BLAKE2b-256 checksum
How to use checksums
ba3e55e0d657a8e858107df90ab95fe3f63ac89ede8983a204635dee5da62e55
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.10

Release history Release notifications | RSS feed

This release

1.0.9 This release

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page