Two approaches to a free data tier. One gives you a crippled version of everything — every endpoint, heavily degraded, enough to see the shape and not enough to use. The other gives you a genuinely complete version of some things and is honest that the rest is paid.

The second is better for both sides, and it is less common because it requires deciding what to actually give away.

Why the teaser approach backfires

A degraded feed teaches a prospective buyer the wrong things about your product. They learn the latency is poor, the coverage is thin and the numbers are vague, because that is what you showed them. The fact that paying fixes all three is a claim they now have reason to discount.

It also makes evaluation impossible. Nobody can tell whether the paid version is good from a version deliberately made bad.

What a good free tier looks like

Complete in what it covers. If it offers aggregate structure, that aggregate should be correct, current within a stated window and documented. The boundary should be about scope, not quality: this much, fully, and the live per-strike detail is paid.

And it should say which fields are withheld, by name, rather than returning zeroes for them. A withheld field reported as nil is a lie about the market; a withheld field listed as withheld is a price list.

What it tells you about the vendor

Use the free tier to evaluate everything except coverage. Does it carry freshness metadata. Are the errors machine-readable. Is the documentation complete. Does an outage produce a refusal or a silent zero.

All of those are properties of the engineering, and they do not change when you pay. If the free surface is sloppy, the paid one is the same code with more rows.