Four new fields in the Revenue & Valuation DB, effective with the 2026-10-31 delivery. The change is additive: no existing field changes name, type or position relative to the others. The same ranges reach the API’s latest revenue and valuation endpoints on the same date — see the API changelog.
Added — confidence intervals on the revenue and valuation estimates
Each estimate now comes with the range it is expected to fall in. The true value lies between the low and high bound 75% of the time. Each pair sits right after itsest_* field and refers to the same month as the point estimate:All four are
DOUBLE, in USD, and null when there is no estimate for that month or no interval for it.What to do: nothing, unless your load declares a fixed column list or reads columns by position — then add the four fields to it.Three changes to the Company DB, all effective with the 2026-10-31 delivery. One removes a field; the other two change how existing fields are typed in Parquet, and leave the values themselves untouched. The CSV delivery is unaffected by the two type changes.
Removed —
Removed — investors
investors lists every investor across all funding rounds as bare names: ["Accel", "Indico Capital Partners"]. It is dropped from every Company DB delivery from 2026-10-31.Use investors_details instead. It is already delivered alongside it and carries the same investors, each as a record of specter_investor_id — which resolves against the Investor DB — and name.What to do: repoint your investor reads at investors_details, and drop investors from your load.Changed — incremental Parquet files carry enum fields as plain strings
In the daily incremental Parquet files, five closed-set fields are dictionary-encoded, while the monthly files carry the same fields as plain strings:The incremental files now match the monthly ones, so one schema loads both. The values do not change.Readers that decode dictionaries transparently — DuckDB, Spark, Polars, BigQuery — already see these as strings and notice nothing. Readers that keep the encoding — pandas (
category dtype) and PyArrow (DictionaryArray) — get plain strings instead.What to do: if your incremental load declares these columns as dictionary or categorical, or casts them from category, declare them as strings. Otherwise nothing.Changed — Parquet carries nested fields as structs and lists, not JSON strings
Six fields hold nested data but are delivered in Parquet as a single JSON-serialized string, which every reader has to parse back. From 2026-10-31 they arrive in their native type, the wayfounders, awards and the other nested fields already do:The struct keys are the keys the JSON carries today, so a value reads the same once parsed —
funding_rounds_details[1].investors[1].name addresses what json_extract(funding_rounds_details, '$[0].investors[0].name') does now. This applies to both the monthly and the incremental Parquet files. The CSV delivery cannot hold nested types and keeps writing these fields as JSON text.What to do: drop the JSON parsing step for these six fields and read them as structs and lists. If your load declares a schema, update their types to the ones above.A breaking change to the Investor DB, effective with the 2026-10-31 monthly delivery.Removed —
Removed — industry_target_legacy
industry_target_legacy packs the industries an investor targets into one delimited string, using Specter’s legacy industry classification: "Biotechnology; DeepTech; Health". It is dropped from the Investor DB delivery from 2026-10-31.Use industry_target instead. It is already delivered alongside it, as a list rather than a string to split, and classifies the investor’s targets with the current Specter industry taxonomy — the same one the Company DB’s specter_industry uses: ["Professional Services", "Business Consulting and Services"].What to do: repoint your industry reads at industry_target, and remap any filter, mapping table or saved list built on the legacy industry names to the current taxonomy. Then drop industry_target_legacy from your load.A data-quality fix to the Company DB, effective with the 2026-09-30 monthly delivery.Fixed —
A company with no Trustpilot profile used to arrive with
Fixed — trustpilot_review_count reports absence as null
A company with no Trustpilot profile used to arrive with trustpilot_review_count set to 0 — the same value as a profile that genuinely has no reviews yet. The two are now distinct:trustpilot_rating already reported absence as null. The count now agrees with it, so the two fields are null together.Only the monthly delivery changes. The daily incremental already reported null, so a company could read 0 in the monthly file and null in the daily file for the same period — that disagreement is now gone.What to do: expect null where you previously read 0. A trustpilot_review_count = 0 filter that meant “no Trustpilot presence” becomes IS NULL; one that meant “has a profile but no reviews yet” is correct as written and now returns only those companies.Two breaking changes to the Company DB, both effective 2026-09-30. Both fields change on the API on the same date — see the API changelog.
Removed —
Replaced —
Removed — news
news packs up to 10 articles into a single serialized string. It is dropped from every Company DB delivery from 2026-09-30.Take news from the News Signals dataset instead. It delivers daily, one row per article, with the fields parsed out rather than packed into a string — see Delivery and formats for its cadence and file naming.What to do: drop news from your load, and add the News Signals delivery if you don’t already take it.Replaced — funding_round_details becomes funding_rounds_details
funding_round_details carries every funding round — type, date, amount, investors — with the investors as bare names: "investors": ["Andreessen Horowitz"]. It is dropped from the same delivery.Use funding_rounds_details instead. It is already delivered alongside it and carries the same rounds, but each investor arrives as a record of specter_investor_id — which resolves against the Investor DB — name and is_lead_investor, and each round adds lead_investors_partners. A sample record shows the shape.What to do: repoint your funding reads at funding_rounds_details.