An anchor field is a field that must exist for a document to be the thing you asked for. If it is missing, you stop — you do not parse on and hope.
It is one line of code and it prevents the most expensive bug in data collection.
The problem it solves
You would expect a request for a non-existent account to return 404. Several large platforms do not:
| Platform behaviour | What your parser sees |
|---|---|
| 200 with an "account not found" page | ~80 KB of valid HTML, no profile |
| 200 with a challenge or interstitial | A page, no data object |
| 200 from the wrong client fingerprint | The real page, with the counter object absent |
In all three cases the HTTP layer says success. Without an anchor, a parser will extract whatever matched and hand back a profile that does not exist — a silent failure in its purest form.
Choosing one
A good anchor is unique in the document and necessary for the answer. Some real ones:
- A single occurrence of the counter object itself — if the number is not there, there is no answer to give.
- The platform's own state container, by exact key.
- A structured-data block of the right type, rather than any block.
A bad anchor is anything the error page also contains. A site's navigation, its logo, its footer — all present on the not-found page too.
Anchor on identity, not on the name
The second job of an anchor is making sure you are looking at the right account, not merely at an account. Handles change; identifiers usually do not. So the anchor is the immutable one where a platform has it — a decentralized identifier on one network, a numeric id plus login on another.
Without that, a renamed account reads as a different account and your time series silently splits in two.
Failing loudly is the feature
When the anchor is absent the correct response is an error, not a partially filled object. A caller can retry an error. A caller cannot detect a profile that was quietly assembled from a not-found page.
Every one of our routes names its anchor on its own page — see the Medium route, where the anchor is mandatory precisely because that platform answers 200 for handles that do not exist.