Pricing Detector avatar

Pricing Detector

Pricing

from $10.00 / 1,000 results

Go to Apify Store
Pricing Detector

Pricing Detector

Detect SaaS Pricing Pages & Extract Prices without LLM

Pricing

from $10.00 / 1,000 results

Rating

5.0

(1)

Developer

Etan gentil

Etan gentil

Maintained by Community

Actor stats

3

Bookmarked

4

Total users

3

Monthly active users

8 days ago

Last modified

Categories

Share

Pricing Radar

Apify Actor that detects pricing pages on any website and extracts structured plan data using an LLM (Claude Haiku or GPT-4o-mini).

How it works

1. HTTP Pre-flight (5s) ─ Cheap fetch: detect platform, PSPs, pricing links
2. Sitemap Scan ─ /sitemap.xml: discover pricing URLs
3. Browser Crawl ─ Playwright + stealth: visit pages, detect pricing signals
4. LLM Extraction ─ On pricing page: HTML → sanitize → Turndown → Markdown → LLM → JSON

Extraction Pipeline

pricingSectionHtml
sanitizeHtml() ─ Strip scripts, styles, SVGs, hash-class attrs
Turndown + GFM plugin ─ Convert to clean Markdown (headers, lists, tables)
MAX_MD_CHARS = 8000 ─ Markdown is ~50% more compact than HTML
LLM (Haiku / GPT-4o-mini)
JSON structured output ─ Per-plan: name, price, type, features, confidence

Input

FieldTypeRequiredDefaultDescription
urlstringyes-Website URL to analyze
llmApiKeystringyes-API key for the LLM provider
llmProviderenumnoanthropicanthropic or openai
maxPagesintegerno5Max pages to crawl (1-10)
timeoutSecondsintegerno45Max execution time (10-120)

Example Input (Clay / API)

{
"url": "https://liftos.app",
"llmProvider": "anthropic",
"llmApiKey": "sk-ant-..."
}

Output

{
"domain": "liftos.app",
"has_pricing_page": true,
"pricing_urls": ["https://liftos.app/pricing"],
"has_free_tier": true,
"need_contact_for_price": false,
"has_monthly_annual_toggle": false,
"plans": [
{
"name": "Free forever",
"price_text": "€0",
"price_value": 0,
"currency": "EUR",
"interval": "none",
"price_type": "free",
"cta_text": "Use for free",
"features": ["10 users", "Unlimited integrations", "20 App uses"],
"confidence": 0.95
},
{
"name": "Business",
"price_text": "€9",
"price_value": 9,
"currency": "EUR",
"interval": "month",
"price_type": "fixed",
"cta_text": "Get started",
"features": ["Unlimited App uses", "1TB Workspace storage"],
"confidence": 0.91
}
],
"confidence": 0.91,
"scraping_status": {
"phase_completed": "browser_scan",
"pages_visited": 2,
"time_elapsed_ms": 8500,
"error": null,
"blocked": false,
"early_stopped": false
}
}

Output Fields

FieldTypeDescription
domainstringRoot domain analyzed
has_pricing_pagebooleanWhether a pricing page was found
pricing_urlsstring[]All discovered pricing URLs
has_free_tierbooleanAt least one free plan detected
need_contact_for_pricebooleanAt least one plan requires contacting sales
has_monthly_annual_togglebooleanMonthly/annual billing toggle detected
plansPlanData[] or nullExtracted plans (null if LLM fails or no pricing page)
confidencenumberGlobal confidence score (0.0 - 1.0)
scraping_statusobjectCrawl metadata (phase, pages, timing, errors)

Plan Fields

FieldTypeValues
namestringPlan name as displayed
price_textstringExact price text as shown
price_valuenumber or nullNumeric price value
currencystring or nullISO currency code
intervalstringmonth, year, one_time, none, unknown
price_typestringfree, fixed, starting_from, contact_sales, custom, unknown
cta_textstring or nullCall-to-action button text
featuresstring[]List of features for this plan
confidencenumberPer-plan confidence (0.0 - 1.0)

Deployment

cd pricing-detector
apify push brave_zygantrum/pricing-radar --force

After pushing, update the Build version in Clay.

Architecture

src/
main.ts ← Orchestrator: preflight, sitemap, browser crawl, LLM, output
pricingExtractor.ts ← HTML sanitize → Turndown → LLM → JSON parse/validate
patterns.ts ← Regex patterns, platform/PSP detection, URL hints
stealth.ts ← Anti-bot evasion, resource blocking
utils.ts ← URL helpers, HTTP preflight, platform detection
scorer.ts ← Weighted scoring for URL discovery confidence

Tech Stack

  • Crawlee + Playwright (rebrowser-playwright) — Browser crawling with stealth
  • Turndown + GFM — HTML to Markdown conversion (tables, lists, headings)
  • Claude Haiku / GPT-4o-mini — Structured data extraction from Markdown
  • Zod — Input validation
  • Apify — Actor framework, dataset storage