{"eid":"goatcounter","name":"GoatCounter","domain":"goatcounter.com","resolved_by":"domain","topics":["dev-services"],"n_records":1,"best_vorder":1,"review":null,"aliases":["GoatCounter","goatcounter.com"],"records":[{"rid":"dev-services/goatcounter","card":{"rid":"dev-services/goatcounter","eid":"goatcounter","topic":"dev-services","slug":"goatcounter","provider":"GoatCounter","url":"https://www.goatcounter.com/","domain":"goatcounter.com","category":"privacy-friendly web analytics (hosted)","tier":"Free hosted service","verdict":"qualifies-with-caveat","vorder":1,"grp":"usable","self_hosted":0,"confidence":"documented","binding":"volume-quota","identity_kind":"email","identity_basis":"stated","needs_card":0,"needs_phone":0,"needs_id":0,"needs_institution":0,"country":null,"crypto":null,"interfaces":"rest","egress_metered":0,"per_object_bytes":null,"retention_days":null,"verified_at":"2026-11-01T18:13:30.918Z","verified_basis":"live","checked_on":"2026-11-01","stale_on":"2026-12-02","n_evidence":14,"usd_month":null,"usd_per_tb_month":null,"summary":"Free for reasonable public usage: a personal website or a small-to-medium business is fine, while sending millions of pageviews a day is not; no numeric cap ...","duplicate_of":null,"n_unknown":0,"free_unit":"unlimited"},"record":{"topic":"dev-services","slug":"goatcounter","provider":"GoatCounter","url":"https://www.goatcounter.com/","category":"privacy-friendly web analytics (hosted)","tier":"Free hosted service","free_tier":{"stated":"Free for reasonable public usage: a personal website or a small-to-medium business is fine, while sending millions of pageviews a day is not; no numeric cap is stated","unit":"unlimited","metered_on":"none","source_url":"https://www.goatcounter.com/","read_on":"2026-11-01","notes":"Financed by donations through GitHub Sponsors. Several sites can share one account (Settings, sites). The hosted service and the open-source app share the same code; the hosted service is the offer recorded here."},"per_object_cap":{"stated":"unverified: no per-pageview or per-request size is stated on the pages read","bytes":null},"retention":{"stated":"unverified: no retention period of the hosted service is stated on the pages read; all data can be exported at any time","days":null,"source_url":"https://www.goatcounter.com/"},"egress":{"terms":"all data can be exported as CSV at any time, through the dashboard or the export endpoints of the API; the API allows 4 requests per second","metered":false,"free_allowance":null,"price_per_tb":null,"source_url":"https://www.goatcounter.com/help/api"},"interface":["rest"],"interface_detail":"REST API under /api/v0 on the account's own host (CODE.goatcounter.com), authenticated by an API key created in the account as a Bearer token (HTTP Basic also works); POST /api/v0/count sends pageviews from a backend in batches, POST /api/v0/export starts a CSV export, and GET endpoints list sites, paths and statistics. The browser side is one script tag, a no-JavaScript tracking pixel, backend middleware or log file import.","endpoint":"https://CODE.goatcounter.com/api/v0","tooling":"a single script tag, the tracking pixel, middleware or log file import for the data in, and any HTTP client with an API key for the data out. As a last resort the open-source app can be self-hosted: the user installs and runs it on a rented or free machine.","chaining":"Pageview counting for a static site on any free host with one script tag and no cookies, with the numbers readable and exportable through the API.","limits":[{"kind":"request-rate","value":"API: 4 requests per second, reported in the X-Rate-Limit response headers","source":"https://www.goatcounter.com/help/api"},{"kind":"volume-quota","value":"free for reasonable public usage, with no number stated; millions of pageviews a day are outside it","source":"https://www.goatcounter.com/"}],"limits_note":"The backend count endpoint has higher rate limits than the browser endpoint and accepts several pageviews in one request.","binding":"volume-quota","binding_note":"The only quota is the unstated reasonable-use ceiling; the 4-requests-a-second API limit binds only on programmatic reads.","identity_cost":{"kind":"email","detail":"The sign-up form asks for an account name, an optional site domain, an email address and a password of at least 8 characters, plus a human check that asks the visitor to type a shown number; no payment field appears on it.","country":null},"reliability_note":"no throttle, ban or data loss is stated on the pages read; the service is financed by donations","confidence":"documented","confidence_note":"The free offer, the sign-up fields and the API limits are quoted from first-party pages. No account was opened and no numeric allowance or retention period is published, so both are unverified.","evidence":[{"url":"https://www.goatcounter.com/","date":"2026-11-01","proved":"the hosted service is free for reasonable public usage and millions of pageviews a day are outside that","capture":"sha256:54855f193d6a7c263b57345d3d86797c318420b584d7d672d9d55e6b069ed421","quote":"GoatCounter.com is currently offered for free for reasonable public usage. Running your personal website or small-to-medium business on it is fine, but sending millions of pageviews/day isn’t."},{"url":"https://www.goatcounter.com/","date":"2026-11-01","proved":"the hosted service is financed by donations","capture":"sha256:54855f193d6a7c263b57345d3d86797c318420b584d7d672d9d55e6b069ed421","quote":"Donations are accepted via [Github Sponsors](https://github.com/sponsors/arp242/) to cover server costs."},{"url":"https://www.goatcounter.com/","date":"2026-11-01","proved":"the app can be self-hosted from its GitHub repository","capture":"sha256:54855f193d6a7c263b57345d3d86797c318420b584d7d672d9d55e6b069ed421","quote":"You can [self-host GoatCounter](https://github.com/arp242/goatcounter) easily if you want to use it for more serious purposes."},{"url":"https://www.goatcounter.com/","date":"2026-11-01","proved":"data can be exported and the account cancelled at any time","capture":"sha256:54855f193d6a7c263b57345d3d86797c318420b584d7d672d9d55e6b069ed421","quote":"Own your data; you can always export all data and cancel at any time."},{"url":"https://www.goatcounter.com/","date":"2026-11-01","proved":"the browser side is a single script tag, with a no-JavaScript image tracker, middleware and log file alternatives","capture":"sha256:54855f193d6a7c263b57345d3d86797c318420b584d7d672d9d55e6b069ed421","quote":"The JavaScript integration is a good option for most, but you can also use a no-JavaScript image-based tracker, integrate in your backend middleware, or parse log files."},{"url":"https://www.goatcounter.com/help/api","date":"2026-11-01","proved":"the API is limited to 4 requests per second","capture":"sha256:622f6af9fb98d74ad85f7882c8b6ae0fa541421aa655434aa2650ceb6fd80046","quote":"The rate limit is 4 requests per second; the current values are reported in the response headers:"},{"url":"https://www.goatcounter.com/help/api","date":"2026-11-01","proved":"the API authenticates with a Bearer API key created in the account","capture":"sha256:622f6af9fb98d74ad85f7882c8b6ae0fa541421aa655434aa2650ceb6fd80046","quote":"To use the API create a key in your account (`[Username in top menu] → API`); send the API key in the `Authorization` header as `Authorization: Bearer [token]`."},{"url":"https://www.goatcounter.com/help/api","date":"2026-11-01","proved":"HTTP Basic authentication with the API key as the password is also supported","capture":"sha256:622f6af9fb98d74ad85f7882c8b6ae0fa541421aa655434aa2650ceb6fd80046","quote":"HTTP Basic auth is also supported; this is mostly useful for testing things from the browser. Leave the username empty and use the API key as the password."},{"url":"https://www.goatcounter.com/help/api","date":"2026-11-01","proved":"the count endpoint sends pageviews from a backend with higher rate limits and batching","capture":"sha256:622f6af9fb98d74ad85f7882c8b6ae0fa541421aa655434aa2650ceb6fd80046","quote":"This is the same as `/count` that the JavaScript integration uses but has higher rate-limits, allows setting some additional fields, and allows batching multiple pageviews in one request."},{"url":"https://www.goatcounter.com/help/api","date":"2026-11-01","proved":"a CSV export is started through the API","capture":"sha256:622f6af9fb98d74ad85f7882c8b6ae0fa541421aa655434aa2650ceb6fd80046","quote":"| `POST /api/v0/export` | Create a new CSV export |"},{"url":"https://www.goatcounter.com/signup","date":"2026-11-01","proved":"the sign-up form asks for an email address and a password of at least 8 characters","capture":"sha256:554115020fe8c3b0b66a951db382a66ed2b5595c87ce50578a3b07e4cd72f8ed","quote":"Email address For password resets, important announcements, invoices."},{"url":"https://www.goatcounter.com/signup","date":"2026-11-01","proved":"the password needs at least 8 characters","capture":"sha256:554115020fe8c3b0b66a951db382a66ed2b5595c87ce50578a3b07e4cd72f8ed","quote":"Password Needs at least 8 characters."},{"url":"https://www.goatcounter.com/signup","date":"2026-11-01","proved":"the sign-up form has a human check that asks the visitor to type a shown number","capture":"sha256:554115020fe8c3b0b66a951db382a66ed2b5595c87ce50578a3b07e4cd72f8ed","quote":"Fill in 9 here Just a little verification that you’re human :-)"},{"url":"https://www.goatcounter.com/terms","date":"2026-11-01","proved":"an email address is required to register an account","capture":"sha256:8c98c22d3283e73e1c3159296cd75f5bed811a1caca1e535fa15b512e3f556db","quote":"We require an email address to register an account."}],"verdict":"qualifies-with-caveat","verified_at":"2026-11-01T18:13:30.918Z","notes":"Third-party lists give a monthly pageview cap and a retention period that the first-party pages read do not state, so neither is recorded as a limit.","self_hosted":false},"claims":[{"path":"$.free_tier","kind":"has-free-tier","num":1.0,"unit":null,"per":null,"currency":null,"usd":null,"fx_date":null,"parse":"ok"},{"path":"$.free_tier.stated","kind":"free-quota","num":null,"unit":null,"per":null,"currency":null,"usd":null,"fx_date":null,"parse":"unparsed"},{"path":"$.limits[0].value","kind":"limit:request-rate","num":4.0,"unit":"requests","per":null,"currency":null,"usd":null,"fx_date":null,"parse":"ok"},{"path":"$.limits[1].value","kind":"limit:volume-quota","num":null,"unit":null,"per":null,"currency":null,"usd":null,"fx_date":null,"parse":"unparsed"}],"unknown":[],"history":[],"drift":[]}]}