Source-verified facts feed for commercial LLM APIs. Every price, token limit, and lifecycle fact carries a verbatim quote from the provider's own page plus an access timestamp — so you can re-verify any claim without trusting us.
🌐 factquire.com · 📡 feed.json (135 models · 16 providers) · 📰 RSS · 🤖 llms.txt · ✅ Corrections
Why this exists: community datasets drift from primary sources (we've found — and fixed upstream — prices off by 2x and stale entries months old; see our audit). FactQuire ties every value to its evidence.
Using the data: grab feed.json or per-model JSON permalinks (/models/<provider>/<model_id>.json). Data is CC BY 4.0 — free for any use with attribution to FactQuire. Code is MIT.
py scripts/publish.py # build → detect changes → commit+push → wait deploy → ping only changed URLs
py scripts/publish.py -m "메시지" # custom commit message
py scripts/publish.py --dry-run # preview what would be published
py scripts/publish.py --full-ping # ping entire sitemap after deployAfter editing data/facts.json (adding models, price changes, etc.), run py scripts/publish.py once. It regenerates the site, publishes only what changed, verifies the deploy landed, and notifies search engines (IndexNow) of just the changed URLs.
py scripts/indexnow.py # submit all sitemap URLs
py scripts/indexnow.py --new # submit only never-submitted URLs
py scripts/indexnow.py --provider groq # submit one provider's model pages
py scripts/indexnow.py <url> [url...] # submit specific URLs
py scripts/indexnow.py --dry-run # preview without sending
py scripts/indexnow.py --log # show submission history (ops/indexnow-log.jsonl)schema/model_fact.schema.jsondefines one model fact entry.data/facts.jsonis the source facts array.data/changelog.jsonrecords release-level model additions, removals, and field changes.data/archive/stores prior facts snapshots before weekly refresh edits.site/feed.jsonis the public feed wrapper generated fromdata/facts.json.site/changelog.jsonis generated fromdata/changelog.json.gaps.mdlists fields left null because collected primary sources did not confirm them.
python scripts/validate.pyOn this Windows workspace, use the Python launcher if python resolves to the Microsoft Store alias:
py scripts/validate.pypython scripts/build_site.pyThen open site/index.html in a browser. The table supports provider filtering, status filtering, and input/output price sorting.
py scripts/diff_facts.py data/archive/facts-YYYY-MM-DD.json data/facts.jsonTests can be run with either command:
py -m pytest tests/
py tests/test_diff_facts.pyBefore editing data/facts.json during a weekly refresh, archive the previous file as data/archive/facts-<date>.json. Then update facts, run the diff script against that archive, and use the resulting entries for the next data/changelog.json release.
FactQuire uses primary sources only: official provider docs, official pricing pages, official changelogs, and official blogs. Every source record includes the source URL, access timestamp, covered fields, and a verbatim quote supporting the values. Values that could not be confirmed from a collected primary source remain null and are recorded in gaps.md.
Prices are normalized to USD per 1M tokens. When providers publish multiple tiers for the same model, notes identify which cited tier was recorded.