Public API · v1

Public API and llms.txt for people and AI agents

Everything we publish is also available as read-only JSON: the access facts, scores, prices and the evidence behind them. Every record carries the page URL to cite, the date we verified it and what that rests on: a hands-on sign-up and API run, or only the vendor's public pages.

  • No key needed
  • 60 requests/min without a key
  • Attribution required
  • JSON · OpenAPI 3.1
  • CORS open

Who it is for

People building on our data

Pull prices and access facts into a procurement sheet, track when a vendor changes its free plan, or build your own comparison view. The filters are the same as on the listing, so any listing URL maps to one API call.

AI agents answering questions

Start from /llms.txt for the map, or /llms-full.txt for every product's key facts in one plain-text file. Use the JSON API when you need the evidence, and quote the source URL and verified date with any number.

Quick start

No sign-up and no key. Send a GET request; every response is JSON with the same envelope. Wherever you show the data, credit us with a link to the record's page (see Terms of use).

  1. Products with a free plan and no card needed, cheapest first

    Shell
    curl -s "https://proofyo.com/api/v1/products?free=plan&card=no&sort=price"
  2. One product with its scores, plans and evidence

    Shell
    curl -s "https://proofyo.com/api/v1/products/supabase-auth"
  3. Two products side by side

    Shell
    curl -s "https://proofyo.com/api/v1/compare?items=supabase-auth,firebase-auth"
  4. From JavaScript (CORS is open, so this also runs in a browser)

    JavaScript
    const res = await fetch('https://proofyo.com/api/v1/products?access=self-serve&price=lt20');
    const { data, meta } = await res.json();
    
    for (const p of data) {
      // Cite the page and the verified date, not the API URL.
      console.log(`${p.name}: ${p.score}/10, verified ${p.verified.date} (${p.source})`);
    }
    console.log(`${meta.total} products, page ${meta.page} of ${meta.pageCount}`);

Terms of use

The API, /llms.txt and /llms-full.txt are free to use. Every record takes real work to check against the vendor's own pages, so we ask for three things in return.

  • Credit us with a link. Wherever you show, quote or summarize our data (in an app, an article or an AI assistant's answer), name Proofyo and link the page in the record's source: the review, comparison or post it came from. Responses carry a ready-made line in attribution.text, an X-Proofyo-Attribution: required header and a Link header with rel="terms-of-service" pointing here.
  • No mirroring or republishing. Reading the data is what it is for: looking up the products you need, caching responses as Cache-Control allows, fetching and indexing /llms-full.txt so an assistant can answer from it, and quoting records with a link are all fine. What the terms rule out is republishing the dataset, as a whole or in large parts (a mirror, a download, a copy in another catalog), and using it to build a competing directory or comparison site.
  • Stay within the limits. Without a key: 60 requests a minute per client and pages of up to 50 items. If you need more, ask for an API key instead of spreading requests over many addresses.

We may revoke a key or block traffic that ignores these terms. If they do not fit what you want to build, tell us: we would rather find a way that works for both sides.

Endpoints

Base URL https://proofyo.com/api/v1. The examples below are generated from the published data each time this page loads.

List and filter products

GET/api/v1/products

The product listing as JSON. Takes the same filter keys as the /products page, so any listing URL on the site maps to this endpoint. Values within one key match any; different keys must all match. Facet counts show how many results each filter value would give with the other filters applied.

Parameters

qstring
Full-text search over name, vendor, tagline, summary and tags. Without sort, results come in relevance order. Control characters count as spaces.
categoryslug
Category slug from GET /categories.
freeplan · trial
Free option: plan = free plan, trial = free trial. Comma-separate (or repeat the key) to match any of them.
accessself-serve · approval · sales
Getting access: self-serve, approval wait or sales call required. Comma-separate (or repeat the key) to match any of them.
cardno · yes
Card to start: no = no card needed, yes = card required.
modelflat · per-seat · usage · tiered · hybrid · quote
Pricing model. Comma-separate (or repeat the key) to match any of them.
public1 · true
Only products with public prices.
pricefree · lt20 · lt50 · lt100 · any
Starter price band: free, under $20, $50 or $100 per month, or any (the default: no price filter, so facets.price.any equals the total).
verifiedagent · assisted
Who did the hands-on work in the published run: agent alone, or agent with admin-supplied login. Matches verified.mode, so demo records and products without a published hands-on run never match.
sortscore · price · newest · name
score (default), price (lowest starter price first), newest (most recently checked), name.
pageinteger
Page number, 1-based. Pages past the end return the last page. 1–10000, default 1.
pageSizeinteger
Items per page, default 24. Up to 50 without an API key; with a key, up to that key's page size (200 unless agreed otherwise) and at most 200 on this endpoint. A larger value is a 400, never silently cut.
Errors400 invalid_parameter404 not_found429 rate_limited
GEThttps://proofyo.com/api/v1/products?free=plan&card=no&sort=price&pageSize=5
200 OK2026-10-25 19:59 UTC
{
  "source": "https://proofyo.com/products?card=no&free=plan&sort=price",
  "attribution": {
    "required": true,
    "text": "Data from Proofyo (proofyo.com): https://proofyo.com/products?card=no&free=plan&sort=price",
    "terms": "https://proofyo.com/developers#terms"
  },
  "data": [
    {
      "slug": "posthog",
      "name": "PostHog",
      "vendor": "PostHog",
      "tagline": "Open-source product analytics with per-event rates published for every volume, 7 years of data on paid usage and a self-serve HIPAA BAA.",
      "category": {
        "slug": "product-analytics",
        "name": "Product analytics",
        "source": "https://proofyo.com/categories/product-analytics"
      },
      "score": 7.8,
      "scoreMax": 10,
      "facts": {
        "signup": "self-serve",
        "verified": "2026-10-15",
        "freeOption": "free-plan",
        "starterPlan": "Pay-as-you-go",
        "starterUnit": "/mo",
        "cardRequired": false,
        "pricingModel": "usage",
        "starterPrice": "$0",
        "publicPricing": true
      },
      "starterPriceUsd": 0,
      "tags": [
        "product analytics",
        "open source"
      ],
      "logoUrl": "https://proofyo.com/media/logos/3b076454667f3ce18ccaa3de.svg",
      "monogram": "PH",
      "valueHeadline": "Per-event rates published for every volume, 7 years of data on paid usage, priced warehouse exports and a HIPAA BAA without a sales contract.",
      "valueKinds": [
        "saves-engineering",
        "compliance"
      ],
      "isDemo": false,
      "verified": {
        "date": "2026-10-15",
        "mode": null,
        "basis": "public_pages",
        "note": "Facts read from the public sign-up and pricing pages on 2026-10-15; no completed sign-up or API call is published."
      },
      "source": "https://proofyo.com/products/posthog",
      "api": "https://proofyo.com/api/v1/products/posthog"
    },
    {
      "slug": "shutterstock-contributor",
      "name": "Shutterstock Contributor",
      "vendor": "Shutterstock, Inc.",
      "tagline": "A free, open, non-exclusive program that licenses your footage to Shutterstock buyers for a 15% to 40% share that rises with the year’s video licenses.",
      "category": {
        "slug": "stock-video-contributors",
        "name": "Stock video marketplaces for contributors",
        "source": "https://proofyo.com/categories/stock-video-contributors"
      },
      "score": 7.7,
      "scoreMax": 10,
      "facts": {
        "signup": "self-serve",
        "verified": "2026-10-15",
        "freeOption": "free-plan",
        "cardRequired": false,
        "pricingModel": "usage",
        "starterPrice": 0,
        "publicPricing": true
      },
      "starterPriceUsd": 0,
      "tags": [
        "stock footage",
        "contributor program"
      ],
      "logoUrl": "https://proofyo.com/media/logos/e4be6a5bb2fee208464cde4d.png",
      "monogram": "SS",
      "valueHeadline": "Put your footage in front of Shutterstock’s buyers and partner channels for free, while you keep selling the same clips anywhere else.",
      "valueKinds": [
        "built-in-reach",
        "ease-of-use"
      ],
      "isDemo": false,
      "verified": {
        "date": "2026-10-15",
        "mode": null,
        "basis": "public_pages",
        "note": "Facts read from the public sign-up and pricing pages on 2026-10-15; no completed sign-up or API call is published."
      },
      "source": "https://proofyo.com/products/shutterstock-contributor",
      "api": "https://proofyo.com/api/v1/products/shutterstock-contributor"
    }
  ],
  "meta": {
    "total": 52,
    "page": 1,
    "pageSize": 5,
    "pageCount": 11,
    "sort": "price",
    "verified": {
      "earliest": "2026-10-15",
      "latest": "2026-10-15"
    }
  },
  "links": {
    "self": "https://proofyo.com/api/v1/products?card=no&free=plan&sort=price&pageSize=5",
    "first": "https://proofyo.com/api/v1/products?card=no&free=plan&sort=price&pageSize=5",
    "last": "https://proofyo.com/api/v1/products?card=no&free=plan&page=11&sort=price&pageSize=5",
    "next": "https://proofyo.com/api/v1/products?card=no&free=plan&page=2&sort=price&pageSize=5",
    "prev": null
  },
  "facets": {
    "category": {
      "transactional-email-api": 1,
      "auth-identity": 4,
      "product-analytics": 3,
      "error-monitoring": 3,
      "postgres-database": 1,
      "feature-flags": 3,
      "search-api": 1,
      "code-hosting": 2,
      "project-management": 1,
      "team-chat": 1,
      "docs-wiki": 1,
      "data-anchoring": 1,
      "llm-apis": 2,
      "object-storage": 1,
      "help-desk": 1,
      "e-signature": 3,
      "stock-video-contributors": 3,
      "crm": 4,
      "email-marketing": 2,
      "scheduling": 1,
      "accounting": 1,
      "social-media-management": 1,
      "website-builders": 2,
      "business-email": 1,
      "ecommerce-platforms": 1,
      "ai-meeting-notes": 2,
      "vector-databases": 3,
      "secrets-management": 2
    },
    "free": {
      "plan": 52,
      "trial": 36
    },
    "access": {
      "self-serve": 52,
      "approval": 0,
      "sales": 0
    },
    "card": {
      "no": 52,
      "yes": 4
    },
    "model": {
      "flat": 1,
      "per-seat": 16,
      "usage": 17,
      "tiered": 14,
      "hybrid": 4,
      "quote": 0
    },
    "public": {
      "0": 1,
      "1": 51
    },
    "price": {
      "free": 52,
      "lt20": 28,
      "lt50": 41,
      "lt100": 43,
      "any": 52
    },
    "verified": {
      "agent": 0,
      "assisted": 0
    }
  }
}
Live response from this site's published data. Arrays are shortened to 2 items and long text is cut.

Get one product with its evidence

GET/api/v1/products/{slug}

Everything on the review page: what you are paying for (value: headline, kinds, summary, proof points, best for, trade-off), the hands-on review (review: setup story, strengths, things to know, pricing reality, exit path, compared products, choose-if / look-elsewhere-if bullets, bottom line), access facts, overall score and breakdown, measured metrics, plans, and the published evidence (run steps, screenshots with absolute URLs, API calls with status codes and secrets masked), plus a ready-made citation. No elapsed times or latency figures anywhere.

Parameters

slugslugpathrequired
Product slug.
Errors404 not_found429 rate_limited
GEThttps://proofyo.com/api/v1/products/supabase-auth
200 OK2026-10-25 19:59 UTC
{
  "source": "https://proofyo.com/products/supabase-auth",
  "attribution": {
    "required": true,
    "text": "Data from Proofyo (proofyo.com): https://proofyo.com/products/supabase-auth",
    "terms": "https://proofyo.com/developers#terms"
  },
  "data": {
    "slug": "supabase-auth",
    "name": "Supabase Auth",
    "vendor": "Supabase",
    "tagline": "Auth inside a Supabase Postgres project: 100,000 monthly active users on the $25 Pro plan, SSO priced per user, 17 regions.",
    "category": {
      "slug": "auth-identity",
      "name": "Authentication and user management",
      "source": "https://proofyo.com/categories/auth-identity"
    },
    "score": 9.3,
    "scoreMax": 10,
    "facts": {
      "signup": "self-serve",
      "verified": "2026-10-15",
      "freeOption": "free-plan",
      "starterPlan": "Pro",
      "starterUnit": "/mo",
      "pricingModel": "usage",
      "starterPrice": "$25",
      "publicPricing": true
    },
    "starterPriceUsd": 25,
    "tags": [
      "authentication",
      "postgres"
    ],
    "logoUrl": "https://proofyo.com/media/logos/eb9ffcd100ad26228a578100.svg",
    "monogram": "SB",
    "valueHeadline": "100,000 monthly active users on the $25 Pro plan, SSO priced per user, and SOC 2, ISO 27001 and a HIPAA BAA on the self-serve Team plan.",
    "valueKinds": [
      "cost-efficiency",
      "compliance"
    ],
    "isDemo": false,
    "verified": {
      "date": "2026-10-15",
      "mode": null,
      "basis": "public_pages",
      "note": "Facts read from the public sign-up and pricing pages on 2026-10-15; no completed sign-up or API call is published."
    },
    "source": "https://proofyo.com/products/supabase-auth",
    "api": "https://proofyo.com/api/v1/products/supabase-auth",
    "value": {
      "headline": "100,000 monthly active users on the $25 Pro plan, SSO priced per user, and SOC 2, ISO 27001 and a HIPAA BAA on the self-serve Team plan.",
      "kinds": [
        "cost-efficiency",
        "compliance"
      ],
      "summary": "Supabase Auth gives a Supabase project sign-in, MFA and SSO with users stored in the project’s own Postgres database. Pro covers 100,000 monthly active users f…",
      "points": [
        {
          "kind": "cost-efficiency",
          "title": "100,000 users for $25",
          "detail": "Pro includes 100,000 monthly active users, then $0.00325 each; the free plan includes 50,000.",
          "evidence": "Pricing page (2026-10-15)"
        },
        {
          "kind": "cost-efficiency",
          "title": "SSO priced per user, not per connection",
          "detail": "SAML SSO on Pro and Team includes 50 SSO users, then $0.015 per user.",
          "evidence": "Pricing page (2026-10-15)"
        }
      ],
      "bestFor": "Teams building on Supabase’s Postgres, or apps with many users and modest budgets, that want region choice and a path to HIPAA.",
      "tradeoff": "Free projects are paused after one week of inactivity, and the compliance documents and BAA start on the $599 Team plan."
    },
    "review": {
      "setupStory": "We read Supabase's pricing and security pages and its Auth, password security, CAPTCHA, passkey, rate limit and regions docs on Oct 15, 2026; we did not sign u…",
      "strengths": [
        {
          "title": "Most users per dollar here",
          "detail": "Pro includes 100,000 monthly active users for $25, then $0.00325 each.",
          "versus": "Clerk’s Pro includes 50,000 retained users; Auth0’s B2C Essentials is $700 at 10,000."
        },
        {
          "title": "SSO priced by user",
          "detail": "50 SSO users are included on Pro, then $0.015 each, with no per-connection fee on the pricing page.",
          "versus": "Clerk charges $75/mo per extra connection; Auth0 from $100."
        }
      ],
      "weaknesses": [
        {
          "title": "Free projects pause",
          "detail": "Free projects are paused after one week of inactivity, and only two can be active.",
          "workaround": null
        },
        {
          "title": "Documents and BAA start on Team",
          "detail": "The SOC 2 report, ISO 27001 certificate and BAA are for Team ($599/mo) and Enterprise customers.",
          "workaround": null
        }
      ],
      "pricingReality": "Supabase bills per organization plan plus usage. Pro is from $25 a month and includes 100,000 monthly active users (then $0.00325 each), 100,000 third-party MA…",
      "exitPath": "The Auth docs say user data is stored in the project’s own Postgres database, in a dedicated schema that you can connect to your tables; the pricing page lists…",
      "comparedWith": [
        {
          "slug": "auth0",
          "name": "Auth0",
          "pickThisWhen": "You want 100,000 users on a $25 plan, SSO priced per user, and a HIPAA BAA without an enterprise contract.",
          "pickThatWhen": "You want a dedicated identity platform with private deployment, CSA STAR and PCI options, and passkeys that are not experimental.",
          "source": "https://proofyo.com/products/auth0",
          "api": "https://proofyo.com/api/v1/products/auth0"
        },
        {
          "slug": "clerk",
          "name": "Clerk",
          "pickThisWhen": "You need an EU hosting region, ISO 27001, or users stored in your own Postgres database.",
          "pickThatWhen": "You want prebuilt sign-in UI, a free plan that never pauses, and billing that skips users who do not return.",
          "source": "https://proofyo.com/products/clerk",
          "api": "https://proofyo.com/api/v1/products/clerk"
        }
      ],
      "chooseIf": [
        "You already build on Supabase or want auth in your own Postgres.",
        "You expect many users and want 100,000 included at $25."
      ],
      "skipIf": [
        "You want an identity service separate from your database platform.",
        "You need production passkeys today."
      ],
      "bottomLine": "From its public pages, Supabase Auth is the least expensive per user of the three and the only one with a BAA on a self-serve plan. It fits best when the rest…"
    },
    "summaryMd": "Supabase Auth is the authentication service of a Supabase project and stores users in the project’s Postgres database. Free includes 50,000 monthly active user…",
    "verdict": "From its public pages, Supabase Auth is the least expensive per user of the three and the only one with a BAA on a self-serve plan. It fits best when the rest…",
    "websiteUrl": "https://supabase.com/auth",
    "pricingUrl": "https://supabase.com/pricing",
    "docsUrl": "https://supabase.com/docs/guides/auth",
    "signupUrl": "https://supabase.com/dashboard/sign-up",
    "scores": [
      {
        "max": 10,
        "note": "per-user rate published with no ceiling; extra SSO priced; 1 contradiction on the page",
        "label": "Pricing clarity",
        "score": 9
      },
      {
        "max": 10,
        "note": "50,000 users, projects paused when inactive or capped",
        "label": "Free tier",
        "score": 9
      }
    ],
    "metrics": {
      "extra": [
        {
          "kind": "data",
          "label": "Free plan",
          "value": "50,000 MAU; paused after 1 week inactive"
        },
        {
          "kind": "data",
          "label": "Entry paid plan at 10,000 users",
          "value": "$25/mo (Pro), 100,000 MAU included"
        }
      ]
    },
    "plans": [
      {
        "name": "Free",
        "price": "$0",
        "priceMonthlyUsd": 0,
        "period": "/mo",
        "unitNote": "50,000 monthly active users",
        "features": [
          "Basic MFA",
          "1-hour auth audit logs"
        ],
        "isFree": true,
        "observedAt": "2026-10-15T00:00:00.000Z"
      },
      {
        "name": "Pro",
        "price": "$25",
        "priceMonthlyUsd": 25,
        "period": "/mo",
        "unitNote": "From $25; 100,000 MAU, then $0.00325 per MAU",
        "features": [
          "SAML SSO: 50 SSO users, then $0.015 each",
          "Leaked password protection"
        ],
        "isFree": false,
        "observedAt": "2026-10-15T00:00:00.000Z"
      }
    ],
    "lastVerifiedAt": "2026-10-15",
    "verifiedMode": null,
    "evidence": {
      "runCount": 0,
      "runs": []
    },
    "publishedAt": "2026-10-19T03:44:31.196Z",
    "updatedAt": "2026-10-19T03:44:31.196Z",
    "notice": null,
    "citation": {
      "source": "https://proofyo.com/products/supabase-auth",
      "verifiedDate": "2026-10-15",
      "text": "Proofyo, \"Supabase Auth review\", facts checked 2026-10-15. https://proofyo.com/products/supabase-auth"
    }
  }
}
Live response from this site's published data. Arrays are shortened to 2 items and long text is cut.

List categories

GET/api/v1/categories

Every category in display order, with its published product count and indexed landing pages.

Parameters

No parameters.

Errors429 rate_limited
GEThttps://proofyo.com/api/v1/categories
200 OK2026-10-25 19:59 UTC
{
  "source": "https://proofyo.com/categories",
  "attribution": {
    "required": true,
    "text": "Data from Proofyo (proofyo.com): https://proofyo.com/categories",
    "terms": "https://proofyo.com/developers#terms"
  },
  "data": [
    {
      "slug": "transactional-email-api",
      "name": "Transactional email APIs",
      "description": "APIs that send password resets, receipts and alerts, compared on what their plans and security pages commit to.",
      "introMd": "Transactional email APIs send the messages your product triggers: password resets, receipts, sign-in links and alerts. They all send email; the differences are…",
      "icon": "mail",
      "productCount": 5,
      "landingPages": [],
      "source": "https://proofyo.com/categories/transactional-email-api",
      "products": "https://proofyo.com/api/v1/products?category=transactional-email-api"
    },
    {
      "slug": "auth-identity",
      "name": "Authentication and user management",
      "description": "Sign-in, MFA, SSO and user management services, compared on what their plans and security pages commit to.",
      "introMd": "Authentication services handle sign-up, sign-in, MFA, single sign-on and the user records behind them, so you do not build and audit that yourself. They all lo…",
      "icon": "key-round",
      "productCount": 5,
      "landingPages": [],
      "source": "https://proofyo.com/categories/auth-identity",
      "products": "https://proofyo.com/api/v1/products?category=auth-identity"
    }
  ],
  "meta": {
    "total": 41
  }
}
Live response from this site's published data. Arrays are shortened to 2 items and long text is cut.

Compare 2 to 4 products

GET/api/v1/compare

Products side by side with rows in the comparison page order: what you are paying for, overall score, the access facts (free option, getting access, card to start, starter price, pricing model, pricing page), then the measured rows (docs quality and category rows) and, when written, each review's bottom line. No time rows. Each row has display values, machine values and the index of the best column where one value wins; a short verdict per use case follows.

Parameters

items2–4 slugsrequired
2 to 4 distinct product slugs, comma-separated, in column order.
Errors400 invalid_parameter404 not_found429 rate_limited
GEThttps://proofyo.com/api/v1/compare?items=supabase-auth,firebase-auth
200 OK2026-10-25 19:59 UTC
{
  "source": "https://proofyo.com/compare/firebase-auth-vs-supabase-auth",
  "attribution": {
    "required": true,
    "text": "Data from Proofyo (proofyo.com): https://proofyo.com/compare/firebase-auth-vs-supabase-auth",
    "terms": "https://proofyo.com/developers#terms"
  },
  "data": {
    "products": [
      {
        "slug": "supabase-auth",
        "name": "Supabase Auth",
        "vendor": "Supabase",
        "tagline": "Auth inside a Supabase Postgres project: 100,000 monthly active users on the $25 Pro plan, SSO priced per user, 17 regions.",
        "category": {
          "slug": "auth-identity",
          "name": "Authentication and user management",
          "source": "https://proofyo.com/categories/auth-identity"
        },
        "score": 9.3,
        "scoreMax": 10,
        "facts": {
          "signup": "self-serve",
          "verified": "2026-10-15",
          "freeOption": "free-plan",
          "starterPlan": "Pro",
          "starterUnit": "/mo",
          "pricingModel": "usage",
          "starterPrice": "$25",
          "publicPricing": true
        },
        "starterPriceUsd": 25,
        "tags": [
          "authentication",
          "postgres"
        ],
        "logoUrl": "https://proofyo.com/media/logos/eb9ffcd100ad26228a578100.svg",
        "monogram": "SB",
        "valueHeadline": "100,000 monthly active users on the $25 Pro plan, SSO priced per user, and SOC 2, ISO 27001 and a HIPAA BAA on the self-serve Team plan.",
        "valueKinds": [
          "cost-efficiency",
          "compliance"
        ],
        "isDemo": false,
        "verified": {
          "date": "2026-10-15",
          "mode": null,
          "basis": "public_pages",
          "note": "Facts read from the public sign-up and pricing pages on 2026-10-15; no completed sign-up or API call is published."
        },
        "source": "https://proofyo.com/products/supabase-auth",
        "api": "https://proofyo.com/api/v1/products/supabase-auth"
      },
      {
        "slug": "firebase-auth",
        "name": "Firebase Authentication",
        "vendor": "Google (Firebase)",
        "tagline": "Sign-in for Firebase and Google Cloud apps: 50,000 monthly active users at no cost, then from $0.0055 each, with SAML at $0.015 per user.",
        "category": {
          "slug": "auth-identity",
          "name": "Authentication and user management",
          "source": "https://proofyo.com/categories/auth-identity"
        },
        "score": 8.4,
        "scoreMax": 10,
        "facts": {
          "signup": "self-serve",
          "verified": "2026-10-15",
          "freeOption": "free-plan",
          "starterPlan": "Blaze (pay as you go)",
          "starterUnit": "/MAU above 50,000",
          "cardRequired": false,
          "pricingModel": "usage",
          "starterPrice": "$0.0055",
          "publicPricing": true
        },
        "starterPriceUsd": null,
        "tags": [
          "authentication",
          "firebase"
        ],
        "logoUrl": "https://proofyo.com/media/logos/120799f51cff880e87bdc5c3.svg",
        "monogram": "FB",
        "valueHeadline": "Sign-in that plugs into Firebase and Google Cloud, free to 50,000 monthly users, with SAML at $0.015 per user and a self-serve Google Cloud BAA.",
        "valueKinds": [
          "cost-efficiency",
          "built-in-reach"
        ],
        "isDemo": false,
        "verified": {
          "date": "2026-10-15",
          "mode": null,
          "basis": "public_pages",
          "note": "Facts read from the public sign-up and pricing pages on 2026-10-15; no completed sign-up or API call is published."
        },
        "source": "https://proofyo.com/products/firebase-auth",
        "api": "https://proofyo.com/api/v1/products/firebase-auth"
      }
    ],
    "rows": [
      {
        "key": "valueHeadline",
        "group": "value",
        "label": "What you're paying for",
        "values": [
          "100,000 monthly active users on the $25 Pro plan, SSO priced per user, and SOC 2, ISO 27001 and a HIPAA BAA on the self-serve Team plan.",
          "Sign-in that plugs into Firebase and Google Cloud, free to 50,000 monthly users, with SAML at $0.015 per user and a self-serve Google Cloud BAA."
        ],
        "raw": [
          "100,000 monthly active users on the $25 Pro plan, SSO priced per user, and SOC 2, ISO 27001 and a HIPAA BAA on the self-serve Team plan.",
          "Sign-in that plugs into Firebase and Google Cloud, free to 50,000 monthly users, with SAML at $0.015 per user and a self-serve Google Cloud BAA."
        ]
      },
      {
        "key": "score",
        "group": "score",
        "label": "Overall score",
        "values": [
          9.3,
          8.4
        ],
        "raw": [
          9.3,
          8.4
        ],
        "kind": "score",
        "best": 0
      }
    ],
    "plans": [
      {
        "slug": "supabase-auth",
        "name": "Supabase Auth",
        "pricingUrl": "https://supabase.com/pricing",
        "plans": [
          {
            "name": "Free",
            "price": "$0",
            "priceMonthlyUsd": 0,
            "period": "/mo",
            "unitNote": "50,000 monthly active users",
            "features": [
              "Basic MFA",
              "1-hour auth audit logs"
            ],
            "isFree": true,
            "observedAt": "2026-10-15T00:00:00.000Z"
          },
          {
            "name": "Pro",
            "price": "$25",
            "priceMonthlyUsd": 25,
            "period": "/mo",
            "unitNote": "From $25; 100,000 MAU, then $0.00325 per MAU",
            "features": [
              "SAML SSO: 50 SSO users, then $0.015 each",
              "Leaked password protection"
            ],
            "isFree": false,
            "observedAt": "2026-10-15T00:00:00.000Z"
          }
        ]
      },
      {
        "slug": "firebase-auth",
        "name": "Firebase Authentication",
        "pricingUrl": "https://firebase.google.com/pricing",
        "plans": [
          {
            "name": "Spark",
            "price": "$0",
            "priceMonthlyUsd": 0,
            "period": "/mo",
            "unitNote": "With Identity Platform: 3,000 daily active users, 2 a day for SAML/OIDC",
            "features": [
              "No payment method needed",
              "Email, social, anonymous and custom sign-in"
            ],
            "isFree": true,
            "observedAt": "2026-10-15T00:00:00.000Z"
          },
          {
            "name": "Blaze",
            "price": "$0.0055",
            "priceMonthlyUsd": null,
            "period": "/MAU",
            "unitNote": "After 50,000 free MAU; $0.0046 from 100,000, $0.0032 from 1M, $0.0025 from 10M",
            "features": [
              "SAML/OIDC: 50 MAU free, then $0.015 each",
              "Phone sign-in and SMS MFA billed per SMS ($0.01 in the US)"
            ],
            "isFree": false,
            "observedAt": "2026-10-15T00:00:00.000Z"
          }
        ]
      }
    ],
    "footnote": "Evidence: Supabase Auth: facts checked 2026-10-15 from its public sign-up and pricing pages, no completed hands-on run; Firebase Authentication: facts checked…",
    "verdicts": [
      {
        "id": "start-today",
        "question": "If you need to start today without a sales call",
        "winners": [
          {
            "slug": "supabase-auth",
            "name": "Supabase Auth",
            "source": "https://proofyo.com/products/supabase-auth"
          }
        ],
        "reason": "Self-serve sign-up; the highest score of the 2 self-serve products here (9.3/10)."
      },
      {
        "id": "no-card",
        "question": "If you want to try it without entering a card",
        "winners": [
          {
            "slug": "firebase-auth",
            "name": "Firebase Authentication",
            "source": "https://proofyo.com/products/firebase-auth"
          }
        ],
        "reason": "Free plan, no card needed; scored 8.4/10."
      }
    ]
  },
  "meta": {
    "count": 2,
    "verified": {
      "earliest": "2026-10-15",
      "latest": "2026-10-15"
    }
  }
}
Live response from this site's published data. Arrays are shortened to 2 items and long text is cut.

List blog posts

GET/api/v1/posts

Published posts, newest first. Every post is written by our AI agent from recorded evidence.

Parameters

kindreview · comparison · guide · news
Post kind.
categoryslug
Category slug.
productslug
Only posts that review or mention this product.
pageinteger
Page number, 1-based. Pages past the end return the last page. 1–10000, default 1.
pageSizeinteger
Items per page, default 12. Up to 50 without an API key; with a key, up to that key's page size (200 unless agreed otherwise) and at most 100 on this endpoint. A larger value is a 400, never silently cut.
Errors400 invalid_parameter404 not_found429 rate_limited
GEThttps://proofyo.com/api/v1/posts?product=supabase-auth
200 OK2026-10-25 19:59 UTC
{
  "source": "https://proofyo.com/products/supabase-auth",
  "attribution": {
    "required": true,
    "text": "Data from Proofyo (proofyo.com): https://proofyo.com/products/supabase-auth",
    "terms": "https://proofyo.com/developers#terms"
  },
  "data": [
    {
      "slug": "auth0-vs-clerk-vs-supabase-auth",
      "kind": "comparison",
      "title": "Auth0 vs Clerk vs Supabase Auth: Supabase Auth leads at 9.3, with 100,000 users for $25",
      "dek": "We read the pricing, security and docs pages of three authentication services on the same day and scored them on the same six indicators. What each one sells,…",
      "category": {
        "slug": "auth-identity",
        "name": "Authentication and user management",
        "source": "https://proofyo.com/categories/auth-identity"
      },
      "coverUrl": null,
      "readMinutes": 6,
      "publishedAt": "2026-10-15T10:00:00.000Z",
      "products": [
        {
          "slug": "auth0",
          "name": "Auth0",
          "source": "https://proofyo.com/products/auth0",
          "isDemo": false,
          "verified": {
            "date": "2026-10-15",
            "mode": null,
            "basis": "public_pages",
            "note": "Facts read from the public sign-up and pricing pages on 2026-10-15; no completed sign-up or API call is published."
          }
        },
        {
          "slug": "clerk",
          "name": "Clerk",
          "source": "https://proofyo.com/products/clerk",
          "isDemo": false,
          "verified": {
            "date": "2026-10-15",
            "mode": null,
            "basis": "public_pages",
            "note": "Facts read from the public sign-up and pricing pages on 2026-10-15; no completed sign-up or API call is published."
          }
        }
      ],
      "isDemo": false,
      "verified": {
        "date": "2026-10-15",
        "mode": null,
        "basis": "per_product",
        "note": "Written from evidence gathered up to 2026-10-15; products[].verified says how each product was checked."
      },
      "source": "https://proofyo.com/blog/auth0-vs-clerk-vs-supabase-auth",
      "api": "https://proofyo.com/api/v1/posts/auth0-vs-clerk-vs-supabase-auth"
    }
  ],
  "meta": {
    "total": 1,
    "page": 1,
    "pageSize": 12,
    "pageCount": 1
  },
  "links": {
    "self": "https://proofyo.com/api/v1/posts?product=supabase-auth",
    "first": "https://proofyo.com/api/v1/posts?product=supabase-auth",
    "last": "https://proofyo.com/api/v1/posts?product=supabase-auth",
    "next": null,
    "prev": null
  }
}
Live response from this site's published data. Arrays are shortened to 2 items and long text is cut.

Get one post

GET/api/v1/posts/{slug}

A published post with its Markdown source, sanitized HTML, the products it covers and a citation.

Parameters

slugslugpathrequired
Post slug.
Errors404 not_found429 rate_limited
GEThttps://proofyo.com/api/v1/posts/deepgram-vs-assemblyai-vs-speechmatics
200 OK2026-10-25 19:59 UTC
{
  "source": "https://proofyo.com/blog/deepgram-vs-assemblyai-vs-speechmatics",
  "attribution": {
    "required": true,
    "text": "Data from Proofyo (proofyo.com): https://proofyo.com/blog/deepgram-vs-assemblyai-vs-speechmatics",
    "terms": "https://proofyo.com/developers#terms"
  },
  "data": {
    "slug": "deepgram-vs-assemblyai-vs-speechmatics",
    "kind": "comparison",
    "title": "Deepgram vs AssemblyAI vs Speechmatics: AssemblyAI 8.4, Speechmatics 8.1, Deepgram 6.6; 500 hours cost $85 to $129",
    "dek": "We read the pricing, docs, data-usage, trust and legal pages of three transcription APIs on the same day and scored them on the same six indicators. What 500 h…",
    "category": {
      "slug": "speech-to-text-apis",
      "name": "Speech-to-text APIs",
      "source": "https://proofyo.com/categories/speech-to-text-apis"
    },
    "coverUrl": null,
    "readMinutes": 7,
    "publishedAt": "2026-10-16T00:00:00.000Z",
    "products": [
      {
        "slug": "deepgram",
        "name": "Deepgram",
        "source": "https://proofyo.com/products/deepgram",
        "isDemo": false,
        "verified": {
          "date": "2026-10-16",
          "mode": null,
          "basis": "public_pages",
          "note": "Facts read from the public sign-up and pricing pages on 2026-10-16; no completed sign-up or API call is published."
        }
      },
      {
        "slug": "assemblyai",
        "name": "AssemblyAI",
        "source": "https://proofyo.com/products/assemblyai",
        "isDemo": false,
        "verified": {
          "date": "2026-10-16",
          "mode": null,
          "basis": "public_pages",
          "note": "Facts read from the public sign-up and pricing pages on 2026-10-16; no completed sign-up or API call is published."
        }
      }
    ],
    "isDemo": false,
    "verified": {
      "date": "2026-10-16",
      "mode": null,
      "basis": "per_product",
      "note": "Written from evidence gathered up to 2026-10-16; products[].verified says how each product was checked."
    },
    "source": "https://proofyo.com/blog/deepgram-vs-assemblyai-vs-speechmatics",
    "api": "https://proofyo.com/api/v1/posts/deepgram-vs-assemblyai-vs-speechmatics",
    "seoTitle": "Deepgram vs AssemblyAI vs Speechmatics: STT APIs compared",
    "seoDescription": "AssemblyAI 8.4, Speechmatics 8.1, Deepgram 6.6 from public pages: 500-hour price, free credit, diarization, training on your audio and HIPAA, Oct 16, 2026.",
    "authorAgent": "claude-opus-5-5",
    "bodyMd": "On six indicators read from each vendor's public pages, **[AssemblyAI](/products/assemblyai)** scores **8.4** out of 10, **[Speechmatics](/products/speechmatic…",
    "html": "<p>On six indicators read from each vendor's public pages, <strong><a href=\"https://proofyo.com/products/assemblyai\" rel=\"noopener\">AssemblyAI</a></strong> sco…",
    "reviewedProduct": null,
    "productCards": [
      {
        "slug": "deepgram",
        "name": "Deepgram",
        "vendor": "Deepgram, Inc.",
        "tagline": "A speech-to-text API with Nova-3 batch transcription from $0.0043 a minute, speaker labels included on pre-recorded audio, and $200 of credit with no card.",
        "category": {
          "slug": "speech-to-text-apis",
          "name": "Speech-to-text APIs",
          "source": "https://proofyo.com/categories/speech-to-text-apis"
        },
        "score": 6.6,
        "scoreMax": 10,
        "facts": {
          "signup": "self-serve",
          "verified": "2026-10-16",
          "freeOption": "free-trial",
          "starterPlan": "Nova-3 Monolingual, pre-recorded (pay-as-you-go)",
          "starterUnit": "/min",
          "cardRequired": false,
          "pricingModel": "usage",
          "starterPrice": "$0.0043",
          "publicPricing": true
        },
        "starterPriceUsd": null,
        "tags": [
          "speech to text",
          "transcription"
        ],
        "logoUrl": "https://proofyo.com/media/logos/1482549cef36bc09287701ac.svg",
        "monogram": "DG",
        "valueHeadline": "Speaker-labelled transcripts of pre-recorded audio at $0.0043 a minute with nothing extra to add, plus regional endpoints and a self-hosting path for later.",
        "valueKinds": [
          "cost-efficiency",
          "saves-engineering"
        ],
        "isDemo": false,
        "verified": {
          "date": "2026-10-16",
          "mode": null,
          "basis": "public_pages",
          "note": "Facts read from the public sign-up and pricing pages on 2026-10-16; no completed sign-up or API call is published."
        },
        "source": "https://proofyo.com/products/deepgram",
        "api": "https://proofyo.com/api/v1/products/deepgram"
      },
      {
        "slug": "assemblyai",
        "name": "AssemblyAI",
        "vendor": "AssemblyAI, Inc.",
        "tagline": "A speech-to-text API priced per audio hour, from $0.15 for Universal-2 batch or Universal-Streaming, with $50 of free credit and a self-serve BAA on paid accou…",
        "category": {
          "slug": "speech-to-text-apis",
          "name": "Speech-to-text APIs",
          "source": "https://proofyo.com/categories/speech-to-text-apis"
        },
        "score": 8.4,
        "scoreMax": 10,
        "facts": {
          "signup": "self-serve",
          "verified": "2026-10-16",
          "freeOption": "free-trial",
          "starterPlan": "Universal-2, pre-recorded",
          "starterUnit": "/hr",
          "cardRequired": false,
          "pricingModel": "usage",
          "starterPrice": "$0.15",
          "publicPricing": true
        },
        "starterPriceUsd": null,
        "tags": [
          "speech to text",
          "transcription"
        ],
        "logoUrl": "https://proofyo.com/media/logos/7672bf72df157e9e1d4b91ec.svg",
        "monogram": "AA",
        "valueHeadline": "A transcription API whose BAA, training opt-out and retention controls are self-serve on paid accounts, with diarized batch audio from $0.17 an hour.",
        "valueKinds": [
          "compliance",
          "cost-efficiency"
        ],
        "isDemo": false,
        "verified": {
          "date": "2026-10-16",
          "mode": null,
          "basis": "public_pages",
          "note": "Facts read from the public sign-up and pricing pages on 2026-10-16; no completed sign-up or API call is published."
        },
        "source": "https://proofyo.com/products/assemblyai",
        "api": "https://proofyo.com/api/v1/products/assemblyai"
      }
    ],
    "createdAt": "2026-10-19T03:44:31.196Z",
    "updatedAt": "2026-10-19T03:44:31.196Z",
    "notice": null,
    "citation": {
      "source": "https://proofyo.com/blog/deepgram-vs-assemblyai-vs-speechmatics",
      "verifiedDate": "2026-10-16",
      "text": "Proofyo, \"Deepgram vs AssemblyAI vs Speechmatics: AssemblyAI 8.4, Speechmatics 8.1, Deepgram 6.6; 500 hours cost $85 to $129\", verified 2026-10-16. https://pro…"
    }
  }
}
Live response from this site's published data. Arrays are shortened to 2 items and long text is cut.

Responses and errors

  • source: the canonical page that shows the same data. Link this one.
  • attribution: required (always true), text (a credit line with the source URL, ready to show) and terms (this page's terms).
  • data: the record or the list. List endpoints add meta (total, page, pageCount) and links (first, last, prev, next, also sent as a Link header).
  • Every product and post carries verified (date, mode, basis, note) and isDemo. basis says what the date rests on: a published hands-on run (signup_and_api, signup, api), only the public pages (public_pages), or a sample record (demo, see below). Detail endpoints add a ready-made citation.
  • A missing access fact means we have not observed it yet. We never fill it with a guess.

Errors use one envelope: { "error": { "code", "message", "details"? } }

400invalid_parameter
A query parameter is unknown, malformed or out of range (including a pageSize above 50 without a key). details names each one.
401invalid_api_key
The request sent an API key that is malformed, unknown or revoked. Fix the key, or send none for anonymous access.
404not_found
No published record with that slug, an unknown category, or an unknown path.
405method_not_allowed
Anything other than GET, HEAD or OPTIONS. The API is read-only.
429rate_limited
More than 60 requests in 60 s from one client without a key, or over your key's limit. Wait Retry-After seconds.
500internal_error
Something failed on our side. Retry with backoff.

Rate limits and caching

  • Without a key: 60 requests per 60 s per client, pageSize up to 50. With an API key: the key's own limits, by default 600 requests per minute and pageSize up to 200 (products at most 200, posts at most 100 per page). A larger pageSize than yours is a 400, never a shorter page. Without a key, limits are per client (IPv4 address or IPv6 /64) when the deployment's trusted proxy is configured (TRUST_PROXY); without it every anonymous client shares one bucket of 600 requests per 60 s. With a key, the key has its own bucket. X-RateLimit-Limit always shows the limit that applies to you. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (seconds). Over the limit you get 429 with Retry-After.
  • Responses are cacheable: Cache-Control: public, s-maxage=60, stale-while-revalidate=300 without a key, private, max-age=60 with one. Each one has a weak ETag; send it back in If-None-Match and you get 304 with no body when nothing changed.
  • CORS is open (Access-Control-Allow-Origin: *), so browser apps can call the API directly.
Shell
# First request: note the ETag
curl -si "https://proofyo.com/api/v1/categories" | grep -i etag

# Later: send it back; 304 means nothing changed
curl -si "https://proofyo.com/api/v1/categories" -H 'If-None-Match: W/"<etag>"'

API keys

Most uses need no key. If yours needs more than the anonymous limits, a key raises them; we issue keys by hand, for a named person or project.

  • To ask for one, write to us at the address on our About page. Say who you are, what you are building and where our data will appear, and roughly how many requests a day you expect.
  • Send the key with every request, as Authorization: Bearer psk_… or X-API-Key: psk_…. Requests with a key count against the key's own limit, and their responses are marked private for caches.
  • Keep the key on your server. CORS is open, but a key in browser code is visible to anyone who opens the page.
  • A key that is malformed, unknown or revoked gets a 401 (invalid_api_key), never quiet anonymous access, so a broken key shows up at once.
  • Keys can be revoked: when the terms above are not followed, when a key leaks (we issue a new one) or when the project ends.
Shell
curl -s "https://proofyo.com/api/v1/products?pageSize=200" \
  -H "Authorization: Bearer $PROOFYO_API_KEY"

Citing our data

Cite the source URL and the verified date with every number you use. Our facts are only as good as the day we checked them, and the date lets your reader judge that.

  • Link source (the review or comparison page), not the API URL.
  • Give verified.date, for example “verified 2026-10-12”.
  • When verified.mode is assisted, say that an admin supplied the login for that test.
  • When verified.basis is public_pages, say “facts checked”, not “tested”: no hands-on sign-up or API run is published for that product. The note is worded that way already.
  • Quote numbers with their units and conditions as we give them (“free plan: 3,000 emails a month, 100 a day”). We publish no durations or latency: they measure our test runner, not the product.
  • Lead with value.headline when you describe what a product is for, and keep its trade-off as neutral as we state it.
  • Never present records with isDemo: true as measurements of a real company.
Example, from the live record
Proofyo, "Supabase Auth review", facts checked 2026-10-15. https://proofyo.com/products/supabase-auth

Data freshness

  • The API reads the same database as the site. A product's facts, scores and prices change only when we check them again, from the vendor's public pages or in an approved agent run (approved by an admin, or automatically when auto-publishing is on), and verified.date moves with them.
  • Shared caches may hold a response for up to 60 s, then serve it stale for up to 300 s while refreshing.
  • /llms.txt and /llms-full.txt are rebuilt at most every 10 minutes.
  • The sitemap lists every product and post with its last change, and the RSS feed announces new posts.

The isDemo field

Every record we publish today is real, with isDemo: false. The field stays in the schema for sample records: one with isDemo: true would describe a made-up product on a *.example domain, to show how Proofyo presents evidence, and its numbers would not be measurements of any real company. Such a record has verified.basis demo, its detail response carries a notice saying so, the RSS feed leaves it out and /llms-full.txt heads it with a label.

Right now all 205 published products are real records.

llms.txt

Plain-text entry points for language models, following the llms.txt convention.

Examples on this page were generated at 2026-10-25 19:59 UTC.