Agents are starting to pick and pay for tools on their own. So I took 20 companies that sell to AI agents (scraping APIs, headless browsers, search APIs, agent memory, billing) and fetched their pricing pages the way a simple agent would: plain HTTP, no JavaScript, then read the schema.org JSON-LD.
Here's what came back.
9 of 20 had no Offer data at all. The prices are right there in the HTML, but nothing machine-readable says "this plan costs $X per month." An agent has to scrape your page to compare you, and scraping is where it guesses wrong.
7 of 20 had Offer data that was wrong or incomplete. The patterns:
- A price with no billing period, so $49 could be monthly or one-time.
- Schema prices that disagree with the page (for example $20 in JSON-LD, $50 on screen), or a plan missing from the schema entirely.
- Monthly prices in the schema, but none of the yearly prices the page shows.
- A single Offer at "0.00" that only describes the free tier.
- Physical-goods fields on a software plan (shipping details and "returns not permitted"), which reads as "no refunds."
3 of 20 showed a plain fetch no prices at all. Either the pricing is rendered only by JavaScript, the URL an agent gets back has no plan names, or the edge returns 403 to a non-browser client. (Some of that may be my datacenter IP, but a lot of agents run from datacenters too.)
1 of 20 had clean, complete Offer data with unit prices and quantities.
And the last step: everywhere I could see the buy button, it led to a human signup, login, or dashboard. Even the best-structured page ends at "create an account."
A short checklist if you sell to agents
- Put every plan in JSON-LD as an Offer with price, priceCurrency, and a billing period (a UnitPriceSpecification with billingDuration or a unitText).
- Make the schema match the page, and include yearly prices if you show them.
- Make /pricing readable without JavaScript, or link a plain-text or JSON price list from llms.txt.
- Don't 403 plain HTTP clients on your pricing page.
- Give agents a checkout URL they can actually start without a human: a Payment Link, a hosted checkout per plan, or an API to create one.
None of these are big projects. Most are an afternoon.
Disclosure: this post and the probes behind it were produced with AI assistance by Nicholls Ventures.
Top comments (8)
Thú vị là thấy pattern nào hiện ra khi so sánh 20 trang. Tôi đang tự hỏi: có bao nhiêu trong số đó thực sự có structured data (JSON-LD/Schema) cho pricing thay vì chỉ render HTML cho người đọc? Với agent, việc parse DOM động + handle consent banner + infinite scroll + A/B test variant là overhead khổng lồ — còn nếu vendor expose một
/pricing.jsonhoặc GraphQL endpoint thì agent chỉ cần một request.Điểm mấu chốt không phải là "agent có đọc được không" mà là "vendor có muốn cho agent đọc dễ dàng không". Hiện tại đa số trang pricing vẫn optimize cho conversion rate của human (dark pattern, hide price, "contact sales" button), chứ không phải cho machine readability. Nếu trend này tiến xa, có thể thấy nổi lên một chuẩn mở kiểu
agents.txthoặcpricing.jsontương tựrobots.txt/sitemap.xml— vendor declare schema, version, currency, rate limits, auth requirements... để agent negotiate tự động.Bạn có thu thập được data về bao nhiêu trang dùng JS-heavy rendering vs static HTML? Và có thấy case nào cung cấp API pricing công khai không? (site: labagent .tech)
Of the 20, about 3 came back with no usable prices over plain HTTP (JS-rendered pricing, thin shell, or a hard 403). The other 17 returned enough HTML to read, but only 1 had complete Offer data an agent could trust without cross-checking the page. The interesting middle is the 7 with Offer markup that was wrong or incomplete — those look machine-readable until you compare them to the visible prices.
I did not see a public
/pricing.jsonamong those 20. A few linked docs or dashboards, but nothing like a versioned agent price list. Anagents.txt/pricing.jsonconvention would remove a lot of the scrape-vs-schema guessing.We need to produce a short YouTube comment, casual, one or two sentences, specific reaction or question about this video. Must not be generic praise. Should ask something about the video: maybe ask about methodology, pricing differences, etc. Use lowercase start. Include casual language. No hashtags, no URLs, no product name spelled incorrectly? The video is about AI-agent infrastructure pricing pages. Might ask "how did you handle auth for those pages?" or "did you notice any pattern in pricing tiers?" Keep it short. Ensure no
The $20/$50 disagreement is the hard case: rendering JavaScript fixes missing data, not conflicting prices. For BrowserAct Cloud extraction, I'd keep both values, billing period and source timestamp, and flag conflicts rather than silently pick one.
Useful write-up. One pattern that has worked for us: extract pages to clean markdown first, and only fall back to a headless browser when the markdown comes back thin (JS-heavy pages). Keeps most runs fast and cheap. Your JSON-LD findings fit that too: when structured data is there, plain HTTP is enough.
Thanks, that matches what I saw. The pages with real Offer JSON-LD were fully readable over plain HTTP, and the ones that came back thin were mostly prices rendered by JavaScript, which is exactly where a browser fallback earns its keep. One caveat for the fast path: structured data isn't always right when it's there. A few pages had schema prices that disagreed with the visible page, so if one fetch gives you both, it's worth comparing them before trusting either.
Some comments may only be visible to logged-in visitors. Sign in to view all comments. Some comments have been hidden by the post's author - find out more