Blog · · By HeardOf
30 B2B software pricing pages: how many show a price before JavaScript runs?
The short answer
Thirteen of thirty B2B software companies serve a plan price in their pricing page's HTML before any script runs, measured 24 September 2026. None draws one only with JavaScript; nine show none; five have no pricing page; three blocked us.
How many SaaS pricing pages show a price without JavaScript?
Thirteen of thirty, measured 24 September 2026. We fetched each company's pricing page with curl, a browser user agent and no script execution, then loaded the same page in headless Chrome with JavaScript on: thirteen serve a plan price in the HTML itself, none draws one only after a script runs, nine have a pricing page that shows no figure either way, five have no pricing page, and three answered curl with a 403 and were left there.
The thirty are six brands in each of five B2B software verticals — real estate CRM, staffing ATS, dental practice management, agency project management and fleet management — from our 4 September 2026 dataset, the same thirty that named but not cited counts. They are B2B software companies, not AI-visibility vendors, and they are named below with what their page did and nothing else.
| Company | Vertical | Page read | Served, no script | Rendered in Chrome | Result |
|---|---|---|---|---|---|
| Follow Up Boss | real estate CRM | followupboss.com/pricing | Grow $69 per user per month, or $58 billed annually; Pro $499 or $416 a month for 10 users; Platform $1,000 or $833 for 30 users | $58, $416, $833 billed annually; toggle opens on Yearly | price served |
| Inside Real Estate (kvCORE) | real estate CRM | insiderealestate.com, home page | none | none | no pricing page; no pricing link served or rendered, /pricing answers 404 |
| Propertybase | real estate CRM | propertybase.lwolf.com, home page | "$89 Per user/month", "from $89/user/month" | same | no pricing page; the home page states the figure, served |
| LionDesk | real estate CRM | crm.liondesk.com/pricing | none; an application shell with no links | sign-in page | no pricing page; the domain sends a visitor to sign in |
| Top Producer | real estate CRM | topproducer.com/pricing | Pro $179 per user per month; Pro + Leads from $479; Pro + Farming from $599; $399, $699, $1,199 team plans; plus $98 and $299, which it serves and does not draw by default | $179; $479 and $599 "starting from"; $399, $699, $1,199; $35; $25 | price served |
| Wise Agent | real estate CRM | wiseagent.com/pricing.asp | CRM $49 a month or $42 billed annually; CRM + WiseSocial $69 or $59; add-ons | $49 and $69 a month; toggle opens on Monthly; first render came back empty, second drew it | price served |
| Bullhorn | staffing ATS | bullhorn.com/pricing | Starter $99, Core $165 per user per month | same | price served |
| Top Echelon | staffing ATS | topechelon.com/pricing | Standard $79, Professional $95 billed annually; $95 and $115 monthly; Network $150 or $135 | $79, $95; toggle opens on Yearly | price served |
| JobAdder | staffing ATS | jobadder.com/pricing | none; "Request pricing" | same | pricing page, no price |
| Vincere | staffing ATS | vincere.io/pricing | 403, a Cloudflare challenge page titled "Just a moment..." that reads "Enable JavaScript and cookies to continue" | not reported; we report the challenge and nothing past it | blocked as served |
| iSmartRecruit | staffing ATS | ismartrecruit.com/best-talent-acquisition-software-pricing | none; "$XX/per user per month", "Get Custom Pricing" | same | pricing page, no price |
| Nowsta | staffing ATS | nowsta.com, home page | none | none | no pricing page; no home link with pricing, price or plans, served or rendered; /pricing redirects home |
| CareStack | dental | carestack.com/pricing | Essentials starting at $829 a month, Intelligence starting at $1,299 a month | same | price served |
| Curve Dental | dental | curvedental.com/pricing | none for a plan; "GET A PERSONALIZED QUOTE"; customer quotes carry figures | same | pricing page, no price |
| Dentrix | dental | dentrix.com/dental-solutions/dentrix-packages-and-suites | none; "Request Info" | none | no pricing page; the home links a packages page, /pricing answers 404 |
| Eaglesoft (Patterson Dental) | dental | pattersondental.com, home and Eaglesoft page | 403 Forbidden, Azure gateway | 403 Forbidden | blocked |
| Denticon (Planet DDS) | dental | planetdds.com/denticon-plans | none for a plan; "Choose a plan that fits you", "TALK TO SALES"; a $469 event banner | same | pricing page, no price |
| Adit | dental | adit.com/pricing | none for a plan; $25 and $50 gift cards for taking a demo | same, plus "Your current location falls outside Adit's area of operation" | pricing page, no price |
| Wrike | agency PM | wrike.com/price | Free $0, Team $10, Business $25 per user per month | same | price served |
| Teamwork.com | agency PM | teamwork.com/pricing | the digits 9.99 and 24.99 with "per user/month billed yearly" in the text; the dollar sign in a data attribute; the currency slot reads "&" until a script fills it | Basics $9.99, Accelerate $24.99, Free $0; toggle opens on Annual | price served |
| Productive | agency PM | productive.io/pricing | Essential $10, Professional $25 per user per month, with monthly and yearly totals | $10, $25 billed yearly; toggle opens on Yearly | price served |
| Scoro | agency PM | scoro.com/pricing | each tier in five currencies at once: €15, $17, £13, $24.5, $24; €25, $29, £22, $42.5, $41; €52, $57, £43, $85.5, $82 | $17, $29, $57 per user per month | price served |
| FunctionFox | agency PM | functionfox.com/pricing | Classic $10.50, Premier $16.00, In-House $36.75 billed annually; $12.75, $19.25, $44 monthly | $10.50, $16.00, $36.75; toggle opens on Annual | price served |
| Workamajig | agency PM | workamajig.com/pricing | $49, $47, $45 per user per month for 10+, 25+, 50+ users | $47 per user per month | price served |
| Fleetio | fleet | fleetio.com/pricing | 403, DataDome: "Please enable JS and disable any ad blocker" | 403, a DataDome device check with no visible text | blocked |
| Motive | fleet | gomotive.com/get-in-touch/?id=pricing, where /pricing redirects | none; no form text in the served HTML | none; "STEP 1 OF 4 What’s your industry?" | pricing page, no price |
| Samsara | fleet | samsara.com/pricing and samsara.com/resources/plans | none; "How many vehicles or assets do you have?"; "Get pricing" | same | pricing page, no price |
| Verizon Connect | fleet | verizonconnect.com/new-wizard/, where the home page's "See plans & pricing" button leads; re-read 18:15 UTC | none; the served HTML has no text | none; "Hi. How many vehicles in your fleet?" | pricing page, no price |
| Azuga | fleet | azuga.com/fleet-pricing-plans | BasicFleet $25, SafeFleet $30, CompleteFleet $35 per vehicle per month; SafetyCam AI $41.99 a month | $25, $30, $35 | price served |
| Teletrac Navman | fleet | teletracnavman.com/build-your-solution, linked as "GET PRICING" | none; "Build your solution in 30 seconds" | same | pricing page, no price |
Which pricing pages show a price only after JavaScript runs?
None of the twenty-seven we could read. Every page in this set that draws a plan price in the browser already carries it in the HTML it serves, which differs from one of the nineteen AI-visibility vendors' pricing pages we read the same day: on 24 September 2026 Peec's pricing page served no figure to curl and drew $95, $245 and $495 a month in headless Chrome, the case that made a line in what nineteen AI-visibility tools charge false and is the reason every page here was read both ways.
Two pages came close enough to name. Teamwork.com serves the digits 9.99 and 24.99 beside "per user/month billed yearly" and keeps the dollar sign in a data attribute; the currency slot in the served text reads "&" until a script fills it, and the browser draws $9.99 and $24.99. Wise Agent's first render came back as an empty page; a second, three seconds longer, drew $49 and $69 a month, which the served HTML also carries. We count both as served, and print the detail because a stricter rule would count Teamwork differently.
What does a crawler that runs no JavaScript see on these pages?
The served column, and on eight of the thirteen pages that serve a price, more than a visitor sees. Those eight carry figures the browser does not draw by default: the monthly set behind an annual toggle on Follow Up Boss, Top Echelon, FunctionFox and Productive; the annual set behind a monthly toggle on Wise Agent; two figures Top Producer's page serves and does not draw by default; the 10-plus and 50-plus tiers Workamajig serves beside the one it draws; and five currencies on Scoro, of which the browser draws the dollar set on its plan cards. A client that reads the HTML and runs nothing has no toggle to consult; which figure it keeps is its own business, and we did not measure that.
Whether ChatGPT's or Perplexity's crawler runs JavaScript we cannot tell you, because neither company's crawler page, as read on 24 September 2026, says. OpenAI's crawler page, read 24 September 2026, describes OAI-SearchBot as "used to surface websites in search results in ChatGPT's search features", prints its user-agent string, which opens with a Chrome 131 string, and recommends "allowing OAI-SearchBot in your site's robots.txt file and allowing requests from our published IP ranges"; the words JavaScript and render do not appear on the page. Perplexity's crawler page, read the same day, says PerplexityBot "is designed to surface and link websites in search results on Perplexity" and adds a section on firewalls: "If you're using a Web Application Firewall (WAF) to protect your site, you may need to explicitly whitelist Perplexity's bots to ensure they can access your content." JavaScript is not mentioned there either.
Three of the thirty pages sit behind that kind of control as far as curl is concerned: Vincere's, behind a Cloudflare challenge; Fleetio's, behind DataDome, which showed curl "Please enable JS and disable any ad blocker" and showed Chrome a 403 and a device-check frame; and Patterson Dental's Eaglesoft page, a 403 from an Azure gateway to both. Whether those controls admit either bot we did not test, and neither crawler page says what its bot does when it meets one.
Which SaaS companies show pricing on their website, by vertical?
All six agency project-management tools serve a price and one of six fleet-management companies does; thirteen of thirty in all, read on 24 September 2026. The six are Wrike, Teamwork.com, Productive, Scoro, FunctionFox and Workamajig; the one is Azuga, at $25 to $35 per vehicle per month. Motive, Samsara, Verizon Connect and Teletrac Navman each have a pricing page that asks a question instead of stating a figure, and Fleetio's page answered with a challenge.
Three of six real estate CRMs serve a price, and the other three have no pricing page: Inside Real Estate's site links to none, LionDesk's domain sends a visitor to a sign-in screen, and Propertybase, with no pricing page, states "from $89/user/month" on its home page, served. In staffing, Bullhorn and Top Echelon serve a figure, JobAdder says "Request pricing", iSmartRecruit's plan card reads "$XX/per user per month", Vincere's page challenged curl, and Nowsta has no pricing page. In dental, CareStack serves Essentials starting at $829 a month; Curve Dental, Denticon and Adit have pricing pages with no plan figure; Dentrix links a packages page and has no pricing page; Eaglesoft's answered 403.
What the nine no-figure pages say instead is on the table, verbatim: a quote button, a form step, a placeholder. This post does not settle whether a SaaS company should show pricing on its website; whether a page that says "Request pricing" is the better commercial choice is not something a fetch can tell you. What a fetch can tell you is that on those nine there is no figure for any client to find, with or without JavaScript, and that on the thirteen there is one, and it is in the HTML.
How was this measured?
With curl and a browser user agent, on 24 September 2026, one fetch per page, redirects followed, no JavaScript executed; then the same address in Google Chrome 153 headless with JavaScript on, a nine-second wait, a scroll to the bottom, and the page's visible text read in the toggle state it opened in. Each pricing page was found from the company's home page, read both served and rendered, by a link labelled pricing, price or plans or by the /pricing path; where neither existed, the home page was read and the company is listed as having no pricing page. A price is a currency figure attached to a plan, tier or per-unit rate. Customer quotes, event banners, gift-card offers, funding banners and placeholders are not prices, and the table says which page carried which.
Limits. One machine, one location, one day; Adit's rendered page told us the location was outside its area of operation, so a page that prices by region could read differently from elsewhere, and we did not check. No challenge or 403 was retried or worked around. Teamwork.com draws its plan-card prices inside a custom element whose contents our text capture cannot read, so its figures were confirmed from the comparison table lower on the page and from a screenshot; in the served text the card's currency slot is "&", and the "$" the browser shows arrives with the script. Wise Agent's first render came back empty and we do not know why; the second did not. Whether either crawler runs JavaScript is not on either crawler page, and we do not know it from anywhere else.
Everything this post says about our own system comes from us and carries its date in the sentence that says it; you cannot check it. Everything else carries a page name and a day.
Common questions
Does ChatGPT's crawler run JavaScript?
OpenAI's crawler page does not say. Read 24 September 2026, it describes OAI-SearchBot as "used to surface websites in search results in ChatGPT's search features", GPTBot as the training crawler and ChatGPT-User as the agent that "may visit a web page" when a user asks, and it recommends allowing OAI-SearchBot in robots.txt and its published IP ranges. The words JavaScript and render do not appear on the page. What we can say is that a client that runs no script gets a plan price from thirteen of these thirty pricing pages and a bot challenge or a 403 from three.
Does PerplexityBot render JavaScript?
Perplexity's crawler page does not say either. Read 24 September 2026, it describes PerplexityBot as "designed to surface and link websites in search results on Perplexity" and Perplexity-User as the fetcher that "might visit a web page to help provide an accurate answer" and "generally ignores robots.txt rules", and it tells site owners with a web application firewall that they "may need to explicitly whitelist Perplexity's bots". Nothing on the page mentions JavaScript.
Which fleet management software companies show their prices?
One of the six we read on 24 September 2026. Azuga's fleet-pricing-plans page serves and draws $25, $30 and $35 per vehicle per month for its three plans. Motive, Samsara, Verizon Connect and Teletrac Navman each have a pricing page that shows no figure and asks a question instead; Verizon Connect's opens with "Hi. How many vehicles in your fleet?", read 24 September 2026. Fleetio's pricing page answered curl with a DataDome challenge and Chrome with a 403 and a device-check frame.
Can a pricing page show a price in a browser and none to a script?
Yes, and none of the twenty-seven we could read does it. Peec's pricing page served no figure to curl and drew $95, $245 and $495 a month in headless Chrome on 24 September 2026, which is why every page here was read both ways. Among the twenty-seven we could read, every page that draws a plan price in the browser already carries it in the served HTML.
These are our numbers. Yours are one audit away.
Thirty companies, one day, every page read twice and every blank left blank. If what you want measured is not what your pricing page serves but whether the engines name you — 40 buyer prompts, you against up to three competitors that you name, as read on 19 September 2026 in the post on which engines we check — that is what HeardOf does.
AI visibility tools: what nineteen of them say about how they get their answers