Dinosaur paleontology encyclopedia API client — dinofyi.com
Project description
dinofyi
Python API client for dinosaur paleontology and fossil record data. Access 6,142 dinosaur species across 15 geological periods, with taxonomic classification, fossil site locations in 198 countries, species comparison data, and paleontological glossary — all through a clean REST API with zero core dependencies.
Extracted from DinoFYI, a dinosaur encyclopedia platform cataloging every known dinosaur genus with classification, temporal range, geographic distribution, and discovery history based on the Paleobiology Database and peer-reviewed paleontological literature.
Explore dinosaur data at dinofyi.com — browse dinosaurs, periods, classifications, fossil sites, and countries.
Table of Contents
- Install
- Quick Start
- What You Can Do
- Command-Line Interface
- MCP Server (Claude, Cursor, Windsurf)
- REST API Client
- API Reference
- Learn More About Dinosaurs
- Nature FYI Family
- FYIPedia Developer Tools
- License
Install
pip install dinofyi # Core (zero deps)
pip install "dinofyi[cli]" # + Command-line interface (typer, rich)
pip install "dinofyi[mcp]" # + MCP server for AI assistants
pip install "dinofyi[api]" # + HTTP client for dinofyi.com API
pip install "dinofyi[all]" # Everything
Or run instantly without installing:
uvx --from dinofyi dinofyi search "tyrannosaurus"
Quick Start
from dinofyi.api import DinoFYI
with DinoFYI() as api:
# Search across all dinosaur species
results = api.search("velociraptor")
print(results)
# Get detailed information for a specific dinosaur
dino = api.get_dinosaur("tyrannosaurus-rex")
print(dino["name"]) # Tyrannosaurus rex
# Browse geological periods — 15 periods of the Mesozoic
periods = api.list_periods()
print(periods["count"]) # 15
# Explore fossil sites across 198 countries
sites = api.list_sites()
print(sites["count"])
What You Can Do
Dinosaur Classification
Dinosaurs are classified within the clade Dinosauria, first defined by Richard Owen in 1842. The fundamental split separates dinosaurs into two major orders based on hip structure — a distinction proposed by Harry Seeley in 1888 that remains central to dinosaur taxonomy today.
| Order | Hip Structure | Major Groups | Examples |
|---|---|---|---|
| Saurischia (lizard-hipped) | Pubis points forward | Theropoda, Sauropodomorpha | T. rex, Brachiosaurus, Velociraptor |
| Ornithischia (bird-hipped) | Pubis points backward | Thyreophora, Ornithopoda, Marginocephalia | Stegosaurus, Triceratops, Iguanodon |
Within these two orders, dinosaurs diversify into numerous families and clades:
| Clade | Description | Notable Members |
|---|---|---|
| Theropoda | Bipedal carnivores (ancestors of birds) | Tyrannosaurus, Allosaurus, Spinosaurus |
| Sauropodomorpha | Long-necked herbivores, largest land animals | Brachiosaurus, Diplodocus, Argentinosaurus |
| Thyreophora | Armored dinosaurs | Stegosaurus, Ankylosaurus |
| Ornithopoda | Beaked herbivores, often bipedal | Iguanodon, Parasaurolophus |
| Marginocephalia | Horned and dome-headed dinosaurs | Triceratops, Pachycephalosaurus |
from dinofyi.api import DinoFYI
with DinoFYI() as api:
# Browse dinosaur classifications
classifications = api.list_classifications()
for cls in classifications["results"][:5]:
print(f"{cls['name']}")
# Get details for a specific classification
theropod = api.get_classification("theropoda")
print(theropod["name"]) # Theropoda
Learn more: Dinosaur Encyclopedia · Classifications · Paleontology Glossary
Geological Time Scale
Dinosaurs dominated Earth for approximately 165 million years during the Mesozoic Era (252-66 Ma), which is divided into three periods: Triassic, Jurassic, and Cretaceous. Each period saw different dinosaur faunas, climate conditions, and continental configurations.
| Period | Time (Ma) | Climate | Dominant Dinosaurs |
|---|---|---|---|
| Late Triassic | 237-201 | Hot, arid interior | Early theropods (Coelophysis), prosauropods |
| Early Jurassic | 201-174 | Warming, humid | Dilophosaurus, early sauropods |
| Middle Jurassic | 174-163 | Warm, tropical | Megalosaurus, early stegosaurs |
| Late Jurassic | 163-145 | Warm, seasonal | Allosaurus, Stegosaurus, Diplodocus |
| Early Cretaceous | 145-100 | Cooling then warming | Iguanodon, Spinosaurus, flowering plants emerge |
| Late Cretaceous | 100-66 | Warm, high sea levels | T. rex, Triceratops, Velociraptor |
The Mesozoic ended with the Cretaceous-Paleogene extinction event (66 Ma), caused by an asteroid impact at Chicxulub, Mexico, wiping out all non-avian dinosaurs.
from dinofyi.api import DinoFYI
with DinoFYI() as api:
# Browse all 15 geological periods
periods = api.list_periods()
for p in periods["results"][:5]:
print(f"{p['name']}")
# Get details for a specific period
cretaceous = api.get_period("late-cretaceous")
print(cretaceous["name"]) # Late Cretaceous
Learn more: Geological Periods · Guides
Fossil Sites and Discovery
Dinosaur fossils have been discovered on every continent, including Antarctica. The history of paleontological discovery spans from the first scientific description of Megalosaurus by William Buckland in 1824 to modern CT-scanning and molecular analysis techniques. DinoFYI catalogs fossil sites with their geographic coordinates, geological formation, and associated species.
| Formation | Location | Notable Finds |
|---|---|---|
| Hell Creek | Montana, USA | T. rex, Triceratops, Edmontosaurus |
| Morrison | Western USA | Allosaurus, Diplodocus, Stegosaurus |
| Ischigualasto | Argentina | Eoraptor, Herrerasaurus (oldest dinosaurs) |
| Djadochta | Mongolia | Velociraptor, Protoceratops, Oviraptor |
| Solnhofen | Germany | Archaeopteryx (earliest known bird) |
| Yixian | China | Feathered dinosaurs (Sinosauropteryx, Microraptor) |
from dinofyi.api import DinoFYI
with DinoFYI() as api:
# Browse fossil sites worldwide
sites = api.list_sites()
for s in sites["results"][:5]:
print(s["name"])
# Get details for a specific fossil site
site = api.get_site("hell-creek-formation")
print(site["name"]) # Hell Creek Formation
Learn more: Fossil Sites · Glossary
Geographic Distribution
Dinosaur fossils have been found in 198 countries, reflecting the changing geography of Earth during the Mesozoic. Pangaea was breaking apart throughout the age of dinosaurs — Laurasia (north) and Gondwana (south) separated in the Jurassic, leading to increasing endemism in the Cretaceous.
from dinofyi.api import DinoFYI
with DinoFYI() as api:
# Browse countries with dinosaur fossil discoveries
countries = api.list_countries()
print(countries["count"]) # 198 countries
# Get fossil data for a specific country
mongolia = api.get_country("mongolia")
print(mongolia["name"]) # Mongolia — rich Cretaceous fossil beds
Learn more: Countries · Guides
Species Comparison
DinoFYI provides detailed comparisons between similar or frequently confused dinosaur species, covering size, diet, temporal range, geographic overlap, and distinguishing features.
from dinofyi.api import DinoFYI
with DinoFYI() as api:
# Browse dinosaur comparisons
comparisons = api.list_comparisons()
for comp in comparisons["results"][:3]:
print(comp["name"])
# Compare two specific dinosaurs
comp = api.get_comparison("t-rex-vs-spinosaurus")
print(comp["name"]) # T. rex vs Spinosaurus
Learn more: Dinosaur Comparisons · Guides
Command-Line Interface
pip install "dinofyi[cli]"
dinofyi search "stegosaurus" # Search across all dinosaur species
MCP Server (Claude, Cursor, Windsurf)
Add dinosaur data to any AI assistant that supports Model Context Protocol.
pip install "dinofyi[mcp]"
Add to your claude_desktop_config.json:
{
"mcpServers": {
"dinofyi": {
"command": "uvx",
"args": ["--from", "dinofyi[mcp]", "python", "-m", "dinofyi.mcp_server"]
}
}
}
REST API Client
from dinofyi.api import DinoFYI
with DinoFYI() as api:
dinos = api.list_dinosaurs() # Browse all 6,142 dinosaurs
periods = api.list_periods() # Browse 15 geological periods
sites = api.list_sites() # Browse fossil sites
results = api.search("raptor") # Full-text search
API Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/dinosaurs/ |
List all dinosaurs |
| GET | /api/v1/dinosaurs/{slug}/ |
Dinosaur detail |
| GET | /api/v1/periods/ |
List geological periods |
| GET | /api/v1/periods/{slug}/ |
Period detail |
| GET | /api/v1/classifications/ |
List classifications |
| GET | /api/v1/classifications/{slug}/ |
Classification detail |
| GET | /api/v1/sites/ |
List fossil sites |
| GET | /api/v1/sites/{slug}/ |
Site detail |
| GET | /api/v1/countries/ |
List countries |
| GET | /api/v1/comparisons/ |
List comparisons |
| GET | /api/v1/glossary/ |
List glossary terms |
| GET | /api/v1/guides/ |
List guides |
| GET | /api/v1/search/?q={query} |
Search across all content |
curl -s "https://dinofyi.com/api/v1/dinosaurs/?limit=3"
Full API documentation at dinofyi.com/developers/. OpenAPI 3.1.0 spec: dinofyi.com/api/openapi.json.
API Reference
| Function | Description |
|---|---|
DinoFYI() |
Create API client (base_url, timeout) |
list_dinosaurs(**params) |
List all dinosaur species |
get_dinosaur(slug) |
Get dinosaur detail |
list_periods(**params) |
List geological periods |
get_period(slug) |
Get period detail |
list_classifications(**params) |
List classifications |
get_classification(slug) |
Get classification detail |
list_sites(**params) |
List fossil sites |
get_site(slug) |
Get site detail |
list_countries(**params) |
List countries |
list_comparisons(**params) |
List comparisons |
list_glossary(**params) |
List glossary terms |
list_guides(**params) |
List guides |
search(query) |
Search across all content |
Learn More About Dinosaurs
- Browse: Dinosaur Encyclopedia · Classifications · Geological Periods
- Reference: Fossil Sites · Countries
- Guides: Glossary · Guides
- API: REST API Docs · OpenAPI Spec
Nature FYI Family
Part of the FYIPedia open-source developer tools ecosystem — living organisms, wildlife, and natural history.
| Package | PyPI | Description |
|---|---|---|
| speciesfyi | PyPI | 49,112 species, 17,982 taxa, 846 ecoregions — speciesfyi.com |
| birdfyi | PyPI | 11,251 birds, 40 orders, 258 families — birdfyi.com |
| fishfyi | PyPI | 78 fish species, 48 orders, 188 families — fishfyi.com |
| plantfyi | PyPI | 379,774 plants, 734 families, 50 orders — plantfyi.com |
| dinofyi | PyPI | 6,142 dinosaurs, 15 periods, 198 countries — dinofyi.com |
FYIPedia Developer Tools
| Package | PyPI | npm | Description |
|---|---|---|---|
| colorfyi | PyPI | npm | Color conversion, WCAG contrast, harmonies — colorfyi.com |
| emojifyi | PyPI | npm | Emoji encoding & metadata for 3,953 emojis — emojifyi.com |
| symbolfyi | PyPI | npm | Symbol encoding in 11 formats — symbolfyi.com |
| unicodefyi | PyPI | npm | Unicode lookup with 17 encodings — unicodefyi.com |
| fontfyi | PyPI | npm | Google Fonts metadata & CSS — fontfyi.com |
| dinofyi | PyPI | — | Dinosaur paleontology & fossil record — dinofyi.com |
| speciesfyi | PyPI | — | Species taxonomy & biodiversity — speciesfyi.com |
| birdfyi | PyPI | — | Bird species encyclopedia — birdfyi.com |
| fishfyi | PyPI | — | Fish species & marine biology — fishfyi.com |
| plantfyi | PyPI | — | Plant taxonomy & cultivation — plantfyi.com |
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dinofyi-0.1.1.tar.gz.
File metadata
- Download URL: dinofyi-0.1.1.tar.gz
- Upload date:
- Size: 229.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f3e3829db71531af8a8f3ce5febb2206de17153e48aed2b0744cf934eb016b5e
|
|
| MD5 |
e10a582822bbec4bdd7f11533755cfb0
|
|
| BLAKE2b-256 |
eaa66d75564ee47f18cba2e577a03964feb4819c3d99e01400bc543a6d8ae450
|
File details
Details for the file dinofyi-0.1.1-py3-none-any.whl.
File metadata
- Download URL: dinofyi-0.1.1-py3-none-any.whl
- Upload date:
- Size: 10.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
165d3ba3bdfbc6a99ac859d677fc3a1502678ada0f4dac2d51a723cf5daaa1b4
|
|
| MD5 |
c14ebd7a78a2ad70b4b64803d6c11490
|
|
| BLAKE2b-256 |
85443d983b37cba3a25499c7bb7e8037815bb9afafad4d0fc4ed588f7e20954c
|