Labsco
firecrawl logo

pricing-tracker

✓ Official1,100

by firecrawl · part of firecrawl/web-agent

Extract pricing tiers from a vendor's pricing page and normalize them into a consistent shape. Optimized for SaaS, API, cloud, LLM, and CDN pricing pages — all of which share similar structure but inconsistent naming.

🔥🔥🔥✓ VerifiedAccount requiredQuick setup
🧩 One of 6 skills in the firecrawl/web-agent package — works on its own, and pairs well with its siblings.

Extract pricing tiers from a vendor's pricing page and normalize them into a consistent shape. Optimized for SaaS, API, cloud, LLM, and CDN pricing pages — all of which share similar structure but inconsistent naming.

Inspect the full instructions your agent will receiveExpand

This is the exact playbook injected into your agent when the skill activates — shown here so you can audit it before installing. You don't need to read it to use the skill.

by firecrawl

Extract pricing tiers from a vendor's pricing page and normalize them into a consistent shape. Optimized for SaaS, API, cloud, LLM, and CDN pricing pages — all of which share similar structure but inconsistent naming. npx skills add https://github.com/firecrawl/firecrawl-agent --skill pricing-tracker Download ZIPGitHub1.1k

Pricing Tracker

Extract pricing tiers from a vendor's pricing page and normalize them into a consistent shape. Optimized for SaaS, API, cloud, LLM, and CDN pricing pages — all of which share similar structure but inconsistent naming.

When to use

  • User provides a pricing URL: "get pricing from https://openai.com/api/pricing"

  • User names a vendor: "what does Vercel cost?", "get Anthropic API pricing"

  • User wants to compare prices across vendors (delegate per-vendor extraction to this skill, then aggregate)

  • User wants to monitor pricing on a schedule (combine with exportSkill: true to generate a standalone workflow)

Do NOT use for e-commerce SKU pricing — use e-commerce instead.

Strategy

Find the pricing URL.

  • If the user provided one, use it.

  • Otherwise search "<vendor> pricing" and take the top result from the vendor's own domain.

Scrape with only-main-content. Pricing pages are heavy on nav and testimonials that waste context.

Identify the unit. Every pricing page has one of these shapes — pick the right one:

  • Per seat — SaaS (Notion, Linear, Vercel)

  • Per request / token / call — API and LLM (OpenAI, Anthropic)

  • Per GB / TB — storage, bandwidth, CDN

  • Per minute / hour — compute (Modal, Replicate)

  • Flat monthly — simple SaaS tiers

  • Usage-based with tiers — cloud (AWS, GCP)

Extract every tier. Include Free and Enterprise even when their price is $0 or "Contact sales" — users care about those as much as the paid tiers.

Flag the gotchas.

  • Annual vs monthly pricing (often a 20% discount buried on annual)

  • Overage rates past the included quota

  • Seat minimums ("Team plan starts at 5 seats")

  • Features gated to higher tiers

  • "Free tier" that requires a credit card

Call formatOutput once with the full pricing object.

Output schema

Copy & paste — that's it
{
 "vendor": "OpenAI",
 "url": "https://openai.com/api/pricing",
 "currency": "USD",
 "billingPeriod": "monthly",
 "unit": "per 1M tokens",
 "tiers": [
 {
 "name": "gpt-4o",
 "price": 2.5,
 "unit": "per 1M input tokens",
 "includedQuota": null,
 "features": [],
 "limits": {},
 "enterpriseOnly": false
 }
 ],
 "freeTierAvailable": false,
 "enterpriseContactOnly": false,
 "notes": "Output tokens priced separately at $10 / 1M. Batch API is 50% off.",
 "capturedAt": "2026-04-15",
 "sources": ["https://openai.com/api/pricing"]
}

Tips

  • Numbers are numbers, not strings. Price 2.5, never "$2.50". Strip currency symbols and commas. Put the currency in currency and the unit in unit.

  • Do not guess. If a tier shows "Contact sales", put null in price and set enterpriseContactOnly: true. Never make up a number.

  • Model-tier grids count as tiers. For LLM pricing pages with many models, emit one tier entry per model.

  • Capture capturedAt: <date> in every output. Makes downstream diffing against a previous run trivial.

  • Annual vs monthly: if both are shown, capture the monthly rate as the primary price and note the annual discount in notes.

  • Always include sources: [...] — at minimum the scraped pricing URL.

See also