SaaS Pricing Scraper
Pricing
from $5.00 / 1,000 pricing plans
SaaS Pricing Scraper
Extract SaaS pricing plans from pricing pages. Returns plan name, monthly/yearly price, billing period, features, and CTA text using JSON-LD, data attributes, and DOM heuristics.
Pricing
from $5.00 / 1,000 pricing plans
Rating
0.0
(0)
Developer
Harsh
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Apify Actor that extracts SaaS pricing plans from public pricing pages. Built with TypeScript, Crawlee CheerioCrawler, and heuristic parsers for common pricing page patterns.
Features
- Extracts per plan: planName, monthlyPrice, yearlyPrice, billingPeriod, features[], ctaText
- Multi-strategy extraction:
- JSON-LD structured data (
Product,Offer) data-*attributes (data-plan,data-monthly-price, etc.)- DOM heuristics for pricing cards, tiers, and feature lists
- JSON-LD structured data (
- Built-in retries, rate limiting, logging, and error handling
- Optional Apify Proxy support
Input
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array | stripe + apify pricing | Pricing page URLs to scrape |
maxRequestsPerCrawl | integer | 50 | Max pages per run |
maxRequestRetries | integer | 3 | HTTP retry count |
maxRequestsPerMinute | integer | 30 | Rate limit |
useProxy | boolean | true | Use Apify Proxy |
See examples/input.json for a ready-to-run example.
Output
Each dataset item represents one pricing plan:
{"planName": "Pro","monthlyPrice": "$49","yearlyPrice": null,"billingPeriod": "monthly","features": ["Unlimited projects", "Priority support"],"ctaText": "Get started","sourceUrl": "https://example.com/pricing","scrapedAt": "2026-07-05T12:00:00.000Z","extractionMethod": "pricing-cards+json-ld","error": null}
Local development
npm installnpm run lintnpm run buildnpm testapify run
Copy examples/input.json to storage/key_value_stores/default/INPUT.json to customize local runs.
Deploy
apify loginapify push
Limitations
- Cheerio parses static HTML only. Pricing pages that render entirely client-side (heavy React/Vue SPAs) may return fewer or no plans.
- Price parsing uses common currency symbols and numeric patterns; localized or custom formats may need site-specific tuning.
- Heuristic selectors work across many SaaS sites but cannot guarantee 100% coverage.
Project structure
.actor/ Actor metadata, input/output/dataset schemasexamples/ Sample input JSONsrc/main.ts Crawler setup, rate limits, retriesroutes.ts Request handlerpricing-extractor.ts Extraction heuristicstypes.ts TypeScript interfacestest/ Unit and integration tests