VOOZH about

URL: https://apify.com/brave_zygantrum/pricing-radar

โ‡ฑ Pricing Detector ยท Apify


Pricing

from $10.00 / 1,000 results

Go to Apify Store

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

2 months 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-classattrs
โ”‚
โ–ผ
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

You might also like

SaaS Pricing Scraper

labrat011/saas-pricing-scraper

Extract structured pricing data from any SaaS company's public pricing page. The dedicated SaaS pricing intelligence tool on the Apify Store.

SaaS Pricing & Plans Scraper

techionik9993/saas-pricing-plans-scraper

Extract SaaS pricing plans, monthly prices, currencies, billing periods, free trial signals, contact-sales links, and pricing page URLs from SaaS websites. Built for competitive intelligence, SaaS research, pricing analysis, and market monitoring.

SaaS Pricing Page Change Monitor

happyfhantum/saas-pricing-page-change-monitor

Monitor SaaS pricing pages and detect changes to plans, prices, billing terms, trials, and packaging language with browser fallback for blocked or JS-heavy pages.

Saas Pricing Page Change Tracker

metal_vitamin/saas-pricing-page-change-tracker

Continuously monitor SaaS pricing and plan pages to detect changes in prices, features, and availability. Capture diffs, timestamps, and page snapshots; deliver structured alerts and datasets for competitive pricing analysis. Reliable, proxy-ready, and configurable for scale.

SaaS Pricing Scraper

datahq/saas-pricing-scraper

Extract structured pricing data from any SaaS website. Get tiers, features, billing options as clean JSON. AI-powered.

DataHQ

13

SaaS Pricing Tracker - Monitor Competitor Pricing Changes

renzomacar/saas-pricing-tracker

Track pricing changes on any SaaS website. Monitor pricing pages to detect plan additions, feature changes, and price adjustments. Get structured pricing data with automated change detection and historical comparison. Ideal for competitive intelligen -- By Renzo Madueno, https://rotatepilot.com

2