How a price gets onto this site

Every green fee on CostaCaddie is read from the club's own published tariff, archived byte-for-byte, extracted against a strict schema, and held at a verification gate before it is published. A rate that moves more than 30%, reads at low confidence, or belongs to a season that has ended is queued for a person rather than published. Each figure carries the date it was last confirmed, and nothing is estimated.

The six steps

  1. Fetch. The club's pricing page is requested with an identified user agent, at a polite rate, and only where robots.txt permits it for that agent. The raw bytes are archived under their content hash before anything reads them.
  2. Change detection. The archived page is hashed as reduced text, not raw bytes, so a rotating session token never looks like a price change. An unchanged page is still a verification: it advances the last-verified date without touching the price.
  3. Extraction. A language model reads the archived text against a strict schema — item, day type, player category, time band, amount, and the dates between which the price applies — and returns a confidence score. The Spanish or Catalan original is stored alongside the English result.
  4. The gate. Extraction never writes to the site. A result is published only if confidence is high and the change is plausible. Anything else is queued: a fee that moved more than 30%, a page whose structure changed, a page that vanished, a tariff whose season had already ended.
  5. Review. Queued extractions are compared side by side against what the site currently says, and approved or rejected by a person. Approval replays the held result through the same publication path — nothing is ever written by hand.
  6. Storage. Prices are insert-only. A changed price closes the old row and opens a new one, so the site can answer what a round cost last season as well as what it costs now. The only value ever overwritten is the last-verified date.

What this does not tell you

CostaCaddie publishes what clubs publish. It is not a booking system and holds no availability: a rate shown here is the club's list price, not a quote for a tee time on a given day. Distances are straight-line between coordinates, not road distance. Loyalty cards, member-guest rates and advance-booking discounts are recorded as notes, not as prices. Where a club publishes a tariff we could not extract at the confidence we publish at, the page says we have no verified rate — never that the club does not publish one.

Reporting an error

If a figure here is wrong, the fastest fix is to say so. Email the page URL and what it should say. Corrections are checked against the club's own page and, where we are wrong, published on the next run of the pipeline. The archived source page means every published figure can be traced back to the bytes it came from, so a disagreement can be settled rather than argued.

[email protected]

How often it is checked

Every source is re-checked on a recurring cycle, and where nothing has changed the last-verified date advances while the price does not. What that date says is the only cadence claim this site makes: the oldest last-verified date across everything published here is 2 Aug 2026, and the freshness shown on any page is the oldest date among the figures on that page, never the date the page was built. If a date here has gone stale, that is visible rather than hidden.

Data last verified