I Spent 10 Years Structuring World History. Today, I’m Open-Sourcing It.
The story behind Histolines: Over 80,000 historical figures, broken down into a flat, machine-readable timeline database under the Apache…
I Spent 10 Years Structuring World History. Today, I’m Open-Sourcing It.
The story behind Histolines: Over 80,000 historical figures, broken down into a flat, machine-readable timeline database under the Apache License.
History is inherently fascinating, but the way we store it on the modern web is completely broken.

If you want to look up the life of Salvador Dalí, Nikola Tesla, or Marie Curie, you are usually forced to wade through thousands of words of dense, unstructured prose on Wikipedia. If you are an AI engineer trying to train a large language model, a data scientist mapping historical networks, or an educator building an interactive tool, text blocks are incredibly frustrating. They are riddled with formatting anomalies, hard to parse chronologically, and agonizingly complex to convert into clean, relational data.
Ten years ago, I decided to solve this problem. I wanted to make history humanly and computationally readable.
Today, after a decade of continuous scraping, crawling, deduplicating, and organizing, I am releasing the massive archive behind **Histolines.com to the open-source community on Kaggle and GitHub under the Apache 2.0 License: `histolines_global_history_timelines_archive_v20260609.csv`**.
The Core Philosophy: Who, What, Where, and When
When I first started building the database engine for Histolines, I realized that every single historical event — no matter how micro or macro — can be stripped down to a highly intuitive, multi-dimensional framework.
Instead of saving a paragraph like “On May 11, 1904, the surrealist painter Salvador Dalí was born in Figueres, Catalonia, Spain,” my architecture normalizes that event into distinct, queryable columns:
- WHO:
Salvador Dali - WHAT:
was born - WHEN:
1904(Year),5(Month),11(Day) - WHERE:
Barcelona / Figueres(with exact or fallback lat/lon geocodes)
By forcing a decade of web-scraped data into this strict atomic structure, the dataset becomes an immediate goldmine for programmatic analysis. Want to pull every major event that happened in Paris between 1920 and 1930 involving modern artists? In an unstructured database, that is a massive natural language processing headache. In this flat CSV, it’s a simple SQL query.
Diving Into the Data Schema
The open-source release features our main, comprehensive events table. Every single row represents a dedicated milestone, performance, publication, or event in a prominent figure's timeline.
We have intentionally kept the schema as flat, simple, and clean as possible:
**whoCharName/whoRel**: The primary historical subject and any intersecting historical characters or relational entities.**whatEventType**: The specific action or verb phrase establishing the context of the milestone.**whenYear/whenMonth/whenDay**: Complete calendar metrics (including negative integers representing BC/BCE eras). A value of0in the month or day column explicitly preserves historical ambiguity where only a year is known for certain.**whereLoc/whereLat/whereLon**: Textual event geography paired with latitude and longitude data points.**eventDetail/whatRef**: The rich, narrative description of the event combined with supplementary background context.
Human History is Beautifully Messy
As data scientists, we are conditioned to hunt for perfectly clean datasets. But human history is fundamentally chaotic, and information floating around the web is heavily debated, frequently conflicting, or occasionally inaccurate.
This dataset represents the absolute best archive we could possibly construct over a ten-year horizon. It contains the authentic quirks of web crawlers and historical record keeping. You will find fuzzy dates, historical anomalies, and conflicting perspectives.
We don’t view this as a defect; we view it as an open invitation. This is a living archive. We are constantly improving it, and by giving it to the global community under the Apache License, we want developers and researchers to help us make it better.
What Will You Build With It?
By releasing this data to everyone under the Apache 2.0 License, my goal is to spark a wave of creativity across the digital humanities and machine learning sectors. Here are a few ways you can immediately put this data to work:
- AI & RAG Applications: Build historical chatbots or timeline engines that answer complex “When did X meet Y?” queries using grounded tabular context rather than hallucinating dates.
- Geospatial Lifespans: Map the geographic movements of historical figures over their lifetimes, tracing paths of exile, creation, and migration.
- Network Graphing: Visualize the hidden social networks of the past to discover which obscure figures served as the ultimate connective bridges between historical eras.
If you have your own datasets of historical facts, want to suggest updates, or want to explore our interactive engines live, head over to **Histolines.com**.
Download the dataset on Kaggle, build something incredible, and share your notebooks with us. Let’s map the past, together.
메타데이터
- post_id
- fdab048e2386
- slug
- i-spent-10-years-structuring-world-history-today-im-open-sourcing-it-fdab048e2386
- url
- https://medium.com/@histolines/i-spent-10-years-structuring-world-history-today-im-open-sourcing-it-fdab048e2386
- canonical_url
- https://medium.com/@histolines/i-spent-10-years-structuring-world-history-today-im-open-sourcing-it-fdab048e2386
- author_url
- https://medium.com/@histolines
- status
- ok
- fetched_at
- 2026-06-22 07:15:07