GoatCounter website screenshot

GoatCounter

GoatCounter is open-source, privacy-friendly web analytics from Martin Tournoij, offered both as a free donation-supported hosted service at goatcounter.com and as a self-hostable Go binary backed by SQLite or PostgreSQL. It tracks pageviews without cookies or persistent personal identifiers. The unversioned JSON API, prefixed /api/v0 and served from each account's own subdomain, covers counting pageviews and events from a backend, reading dashboard statistics (totals, per-path hits, referrals, browser/system/location breakdowns), running asynchronous CSV and JSON exports with an incremental hit-ID cursor, and managing sites and users. Authentication is a per-site API key sent as an HTTP bearer token, and the provider publishes its own OpenAPI 2.0 contract at https://www.goatcounter.com/api.json.

GoatCounter publishes 9 APIs on the APIs.io network, including Exports API, Pageviews API, Paths API, and 6 more. Tagged areas include Analytics, Page Views, Privacy, Statistics, and Web Analytics.

GoatCounter’s developer surface includes authentication, documentation, signup flow, API reference, getting-started guide, support, pricing, and 27 more developer resources.

52.0/100 developing ▬ flat Agent 26/100 agent aware saas Full breakdown ↓
scored 2026-09-08 · rubric v0.20.0
AccessFreeSelf serve⚡ Free to try
2 APIs
AnalyticsPage ViewsPrivacyStatisticsWeb AnalyticsOpen-SourceSelf-HostedEventData ExportDeveloper Tools

Kin Score

Kin Score Kin Score How this is scored →
scored 2026-09-08 · rubric v0.20.0
Create-or-Update Ergonomics applies to this provider. This API accepts writes, so it carries 10 points of the composite. It is scored from the published contracts themselves: whether a caller can create-or-update in one call, whether the write accepts a key the caller already holds, and whether the response says which branch ran. Without that, every write needs a search-and-branch in front of it, and the first time that check is skipped a duplicate record is created. Scored against the observed mean rather than raw — a provider at the catalog average is unchanged by this facet, not penalised by it.
Improve this rating by publishing the missing artifacts — every area above can be raised, and the full rubric is at apis.io/rating/. Every facet and dimension name above is a link: it opens that measurement's own page — what it means, the exact checks that feed it, how the whole catalog distributes on it, and the providers at the top of it. This rating is computed from github.com/api-evangelist/goatcounter: open an issue to ask a question, or submit a pull request to add artifacts. Submit an artifact on GitHub — free → Manage your own listing — the Influence plan, $499/mo →

APIs 9

Individual APIs this provider publishes, each with its own machine-readable definition.

GoatCounter Exports API

The Exports API from GoatCounter — 3 operation(s) for exports.

GoatCounter Pageviews API

The Pageviews API from GoatCounter — 1 operation(s) for pageviews.

GoatCounter Paths API

The Paths API from GoatCounter — 1 operation(s) for paths.

GoatCounter Sites API

The Sites API from GoatCounter — 2 operation(s) for sites.

GoatCounter Statistics API

The Statistics API from GoatCounter — 5 operation(s) for statistics.

GoatCounter Users API

The Users API from GoatCounter — 1 operation(s) for users.

GoatCounter Count API

The count API from GoatCounter — 1 operation(s) for count.

GoatCounter Export API

The export API from GoatCounter — 3 operation(s) for export.

GoatCounter Stats API

The stats API from GoatCounter — 5 operation(s) for stats.

Scroll for all 9

Open Collections 8

Open, tool-agnostic API collections (OpenAPI-derived and Bruno).

API Collection

OPEN COLLECTION

GoatCounter Exports API

OPEN COLLECTION

GoatCounter API

OPEN COLLECTION

Scroll for all 8

Pricing Plans 1

Published pricing tiers and plan structures.

Rate Limits 1

Documented rate limits and quota policies.

Goatcounter Rate Limits

1 limits

RATE LIMITS

FinOps 1

Cost, billing, and metering signals for API financial operations.

Security Posture 3

Authentication, domain security, vulnerability disclosure, and trust-center signals.

Goatcounter Authentication

http · 2 schemes

SECURITY

Goatcounter Domain Security

TLSv1.3 · DNSSEC

SECURITY

Goatcounter Vulnerability Disclosure

Hackerone · security.txt · contact published

SECURITY

Agentic Access 1

Recommended x-agentic-access execution contracts for AI agents.

Goatcounter Agentic Access

16 operations · 5 acting

16 operations · 5 acting

AGENTIC

Resources

Get Started 3

Portal, sign-up, and the first successful call

Documentation 3

Reference material describing how the API behaves

Agent Surfaces 3

MCP servers, agent skills, and machine-readable catalogs

Design & Contract 6

Pagination, idempotency, versioning, errors, and events

Build 3

SDKs, sample code, and the tooling you integrate with

Access & Security 5

Authentication, authorization, and security posture

Operate 4

Status, limits, changes, and where to get help

Commercial 5

Pricing, plans, and the legal terms of use

Company 1

The organization behind the API

Other 1

Properties that don't map to a standard resource type

Source (apis.yml)

apis.yml Raw ↑
aid: goatcounter
name: GoatCounter
description: GoatCounter is open-source, privacy-friendly web analytics from Martin Tournoij, offered both as a free donation-supported
  hosted service at goatcounter.com and as a self-hostable Go binary backed by SQLite or PostgreSQL. It tracks pageviews without
  cookies or persistent personal identifiers. The unversioned JSON API, prefixed /api/v0 and served from each account's own
  subdomain, covers counting pageviews and events from a backend, reading dashboard statistics (totals, per-path hits, referrals,
  browser/system/location breakdowns), running asynchronous CSV and JSON exports with an incremental hit-ID cursor, and managing
  sites and users. Authentication is a per-site API key sent as an HTTP bearer token, and the provider publishes its own OpenAPI
  2.0 contract at https://www.goatcounter.com/api.json.
type: Index
deliveryModel:
  model: saas
  open_source: false
  commercial: true
  callable_host: true
  label: Hosted service · you call their endpoint
  confidence: high
  source:
  - openapi
  - pricing
  generated: '2026-08-28'
  method: derived
accessModel:
  pricing: free
  onboarding: self-serve
  trial: false
  try_now: true
  public: false
  label: Free (donation-supported) · Self-serve signup
  confidence: high
  source:
  - plans
  - authentication
  generated: '2026-08-13'
  method: searched
  note: Corrected 2026-08-13 from "freemium" to "free". GoatCounter publishes no paid tier — the hosted service is offered
    free for reasonable public usage and funded by donations, with self-hosting as the route for heavier use. Source https://www.goatcounter.com/#pricing
position: Consuming
access: 3rd-Party
image: https://kinlane-images.s3.amazonaws.com/shared/apis-json/icons/goatcounter.png
tags:
- Analytics
- Page Views
- Privacy
- Statistics
- Web Analytics
- Open-Source
- Self-Hosted
- Event
- Data Export
- Developer Tools
tags_raw:
- Analytics
- Pageviews
- Privacy
- Statistics
- Web Analytics
- Open Source
- Self-Hosted
- Events
- Data Export
- Developer Tools
created: '2025-02-08'
modified: '2026-08-13'
url: https://raw.githubusercontent.com/api-evangelist/goatcounter/refs/heads/main/apis.yml
specificationVersion: '0.23'
apis:
- aid: goatcounter:goatcounter-exports-api
  name: GoatCounter Exports API
  description: The Exports API from GoatCounter — 3 operation(s) for exports.
  humanURL: https://www.goatcounter.com/help/api
  baseURL: https://{code}.goatcounter.com/api/v0
  tags:
  - Export
  tags_raw:
  - Exports
  properties:
  - type: OpenAPI
    url: openapi/goatcounter-exports-api-openapi.yml
  - type: Documentation
    url: https://www.goatcounter.com/help/api
- aid: goatcounter:goatcounter-pageviews-api
  name: GoatCounter Pageviews API
  description: The Pageviews API from GoatCounter — 1 operation(s) for pageviews.
  humanURL: https://www.goatcounter.com/help/api
  baseURL: https://{code}.goatcounter.com/api/v0
  tags:
  - Page Views
  tags_raw:
  - Pageviews
  properties:
  - type: OpenAPI
    url: openapi/goatcounter-pageviews-api-openapi.yml
  - type: Documentation
    url: https://www.goatcounter.com/help/api
- aid: goatcounter:goatcounter-paths-api
  name: GoatCounter Paths API
  description: The Paths API from GoatCounter — 1 operation(s) for paths.
  humanURL: https://www.goatcounter.com/help/api
  baseURL: https://{code}.goatcounter.com/api/v0
  tags:
  - Paths
  properties:
  - type: OpenAPI
    url: openapi/goatcounter-paths-api-openapi.yml
  - type: Documentation
    url: https://www.goatcounter.com/help/api
- aid: goatcounter:goatcounter-sites-api
  name: GoatCounter Sites API
  description: The Sites API from GoatCounter — 2 operation(s) for sites.
  humanURL: https://www.goatcounter.com/help/api
  baseURL: https://{code}.goatcounter.com/api/v0
  tags:
  - Sites
  properties:
  - type: OpenAPI
    url: openapi/goatcounter-sites-api-openapi.yml
  - type: Documentation
    url: https://www.goatcounter.com/help/api
- aid: goatcounter:goatcounter-statistics-api
  name: GoatCounter Statistics API
  description: The Statistics API from GoatCounter — 5 operation(s) for statistics.
  humanURL: https://www.goatcounter.com/help/api
  baseURL: https://{code}.goatcounter.com/api/v0
  tags:
  - Statistics
  properties:
  - type: OpenAPI
    url: openapi/goatcounter-statistics-api-openapi.yml
  - type: Documentation
    url: https://www.goatcounter.com/help/api
- aid: goatcounter:goatcounter-users-api
  name: GoatCounter Users API
  description: The Users API from GoatCounter — 1 operation(s) for users.
  humanURL: https://www.goatcounter.com/help/api
  baseURL: https://{code}.goatcounter.com/api/v0
  tags:
  - User
  tags_raw:
  - Users
  properties:
  - type: OpenAPI
    url: openapi/goatcounter-users-api-openapi.yml
  - type: Documentation
    url: https://www.goatcounter.com/help/api
- aid: goatcounter:goatcounter-count-api
  name: GoatCounter Count API
  description: The count API from GoatCounter — 1 operation(s) for count.
  humanURL: https://www.goatcounter.com/help/api
  baseURL: https://{code}.goatcounter.com/api/v0
  tags:
  - Count
  tags_raw:
  - count
  properties:
  - type: OpenAPI
    url: openapi/goatcounter-count-api-openapi.yml
- aid: goatcounter:goatcounter-export-api
  name: GoatCounter Export API
  description: The export API from GoatCounter — 3 operation(s) for export.
  humanURL: https://www.goatcounter.com/help/api
  baseURL: https://{code}.goatcounter.com/api/v0
  tags:
  - Export
  tags_raw:
  - export
  properties:
  - type: OpenAPI
    url: openapi/goatcounter-export-api-openapi.yml
- aid: goatcounter:goatcounter-stats-api
  name: GoatCounter Stats API
  description: The stats API from GoatCounter — 5 operation(s) for stats.
  humanURL: https://www.goatcounter.com/help/api
  baseURL: https://{code}.goatcounter.com/api/v0
  tags:
  - Stats
  tags_raw:
  - stats
  properties:
  - type: OpenAPI
    url: openapi/goatcounter-stats-api-openapi.yml
common:
- type: AgenticAccess
  url: agentic-access/goatcounter-agentic-access.yml
- type: DomainSecurity
  url: security/goatcounter-domain-security.yml
- type: Authentication
  url: authentication/goatcounter-authentication.yml
- type: Website
  url: https://www.goatcounter.com/
- type: Documentation
  url: https://www.goatcounter.com/help/api
- type: SignUp
  url: https://www.goatcounter.com/signup
- type: GitHubOrganization
  url: https://github.com/arp242/goatcounter
- type: OpenAPI
  name: GoatCounter API (provider-published OpenAPI 2.0)
  url: openapi/_original/goatcounter-api-swagger20.json
- type: APIReference
  url: https://www.goatcounter.com/api2.html
- type: GettingStarted
  url: https://www.goatcounter.com/help/start
- type: Support
  url: https://www.goatcounter.com/contact
- type: Pricing
  url: https://www.goatcounter.com/#pricing
- type: TermsOfService
  url: https://www.goatcounter.com/help/terms
- type: PrivacyPolicy
  url: https://www.goatcounter.com/help/privacy
- type: StatusPage
  url: https://www.goatcounter.com/status
- type: Security
  url: https://www.goatcounter.com/security.txt
- type: SecurityTxt
  url: well-known/goatcounter-security.txt
- type: VulnerabilityDisclosure
  url: security/goatcounter-vulnerability-disclosure.yml
- type: Packages
  url: packages/goatcounter-packages.yml
- type: CLI
  url: cli/goatcounter-cli.yml
- type: Components
  url: components/goatcounter-components.yml
- type: Sandbox
  url: sandbox/goatcounter-sandbox.yml
- type: Conventions
  url: conventions/goatcounter-conventions.yml
- type: ErrorCatalog
  url: errors/goatcounter-problem-types.yml
- type: DataModel
  url: data-model/goatcounter-data-model.yml
- type: Lifecycle
  url: lifecycle/goatcounter-lifecycle.yml
- type: ChangeLog
  url: changelog/goatcounter-changelog.yml
- type: Conformance
  url: conformance/goatcounter-conformance.yml
- type: Overlay
  url: overlays/goatcounter-api-overlay.yaml
- type: LLMsTxt
  url: llms/goatcounter-llms.txt
- type: AgentSkill
  url: skills/_index.yml
- type: Plans
  url: plans/goatcounter-plans-pricing.yml
- type: RateLimits
  url: rate-limits/goatcounter-rate-limits.yml
- type: FinOps
  url: finops/goatcounter-finops.yml
maintainers:
- FN: Kin Lane
  email: kin@apievangelist.com
x-enrichment:
  date: '2026-08-13'
  status: enriched
  artifacts_added: 18
  pass: local-v1

Work with this as data

Every provider here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for providers

9 MCP tools reach this
  • find_providersBrowse and filter every provider in the catalog.
  • get_provider_artifactsEvery artifact this provider publishes, grouped by type.
  • get_provider_operationsEvery operation across all of their OpenAPIs — one call instead of parsing every spec.
  • get_provider_toolsEvery MCP tool they ship, with the operation each wraps.
  • get_provider_evidenceHow each part of their score was established. Free — the basis for a claim should not sit behind it.
  • get_provider_ratingPRO — composite, band, trend and facet scores.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This provider
curl "https://apis.io/api/v1/providers/goatcounter"
All providers
curl "https://apis.io/api/v1/providers?limit=25"
Every operation they expose
curl "https://apis.io/api/v1/providers/goatcounter/operations?limit=25"
How their score was established
curl "https://apis.io/api/v1/providers/goatcounter/evidence"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.