PriceParse Docs
Everything you need to start extracting pricing in 5 minutes.
What PriceParse does
PriceParse turns any SaaS pricing page URL into clean, structured JSON. Built for AI agents, competitive intelligence tools, and automated workflows that need reliable pricing data without writing custom scrapers for each page.
Getting started
- Sign up at app.priceparse.com. You get 100 free extractions per month, no credit card.
- Copy your API key from the dashboard.
- Make your first API call (see below).
Authentication
Pass your API key in the Authorization header as a Bearer token.
Authorization: Bearer pk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Endpoints
Three endpoints, one base URL at https://api.priceparse.com. All require a Bearer token. /v1/extract and /v1/diff count as 1 extraction each. /v1/history is free.
POST /v1/extract
Extract pricing from a URL once. The current behavior, unchanged.
/v1/extractapplication/jsonREQUEST BODY
{
"url": "https://stripe.com/pricing"
}RESPONSE (200)
{
"tiers": [
{"name": "Starter", "price": 0, "billing_cycle": "monthly", "features": ["..."], "limits": {...}}
],
"addons": [],
"confidence": 0.94
}POST /v1/diff
Extract the current pricing, save it as a snapshot, and compare it against the most recent previous snapshot for the same URL. Returns a structured diff plus a one-sentence summary. The first call for a given URL returns is_first_snapshot: true and skips the diff.
/v1/diffapplication/jsonREQUEST BODY
{
"url": "https://stripe.com/pricing"
}RESPONSE (200)
{
"url": "https://stripe.com/pricing",
"is_first_snapshot": false,
"current_extracted_at": "2026-05-13T20:45:00Z",
"previous_extracted_at": "2026-05-06T20:45:00Z",
"days_between": 7,
"changes": {
"tiers_added": [{"name": "Enterprise Plus", "price": 999}],
"tiers_removed": [],
"tier_changes": [
{
"tier_name": "Pro",
"price_changed": {"from": 99, "to": 119, "delta": 20, "delta_pct": 20.2},
"features_added": ["AI features"],
"limits_changed": [{"key": "api_calls", "from": "10000", "to": "5000"}]
}
],
"summary": "Pro tier increased by €20 (+20%). Enterprise Plus added. API call limit on Pro reduced from 10k to 5k."
},
"current": { "tiers": [...], "addons": [], "confidence": 0.95 },
"previous": { "tiers": [...], "addons": [], "confidence": 0.93 }
}GET /v1/history
List historical snapshots for a URL, newest first. Free. Does not consume your monthly quota.
/v1/history?url=...&limit=10url (required), limit (optional, default 10, max 50)RESPONSE (200)
{
"url": "https://stripe.com/pricing",
"count": 2,
"snapshots": [
{"extracted_at": "2026-05-13T20:45:00Z", "tiers": [...], "addons": [], "confidence": 0.95},
{"extracted_at": "2026-05-06T20:45:00Z", "tiers": [...], "addons": [], "confidence": 0.93}
]
}GET /v1/pulse MARKET INTEL
/v1/pulse aggregates pricing intelligence across all SaaS products in an industry. Get a structured view of the market: who’s raising prices, what tiers are being launched, what trends are emerging. Updated every 6 hours from our shared snapshot database.
/v1/pulse?industry=crm&window_days=30industry (required: crm, martech, devtools, hr_tech, fintech, data_infra, ai_tooling, analytics, support, project_mgmt), window_days (optional, default 30, max 90)RESPONSE (200) — ENOUGH DATA
{
"industry": "crm",
"window_days": 30,
"generated_at": "2026-05-13T21:45:00Z",
"tracked_companies": 47,
"tracked_urls": 62,
"stats": {
"price_increases": 12,
"price_decreases": 2,
"new_tiers_launched": 5,
"tiers_discontinued": 1,
"avg_increase_pct": 14.3,
"median_increase_pct": 9.5,
"biggest_movers": [
{"domain": "hubspot.com", "change": "Pro tier +€40 (+18%)", "occurred_at": "2026-05-02"},
{"domain": "pipedrive.com", "change": "Advanced tier +€8 (+12%)", "occurred_at": "2026-04-28"}
]
},
"trends": [
"Usage-based pricing replaces seat pricing on 6 of 47 CRMs in last 90 days",
"5 new AI tier add-ons launched at avg €39/mo",
"Free tier limits tightened on 4 platforms"
],
"summary": "The CRM market is mid-cycle pricing pressure. Average increase of 14% on Pro/Business tiers is double last year's pace, driven by AI feature bundling."
}RESPONSE (200) — INSUFFICIENT DATA
{
"industry": "crm",
"insufficient_data": true,
"tracked_companies": 2,
"minimum_required": 5,
"message": "Not enough data yet. PriceParse needs at least 5 tracked companies per industry to compute pulse. As more URLs are extracted, this industry will become available."
}ERROR CODES (all endpoints)
- 400
/v1/pulseonly:invalid_industry— the response body includesvalid_industrieswith the full enum. - 401Invalid or missing API key.
- 422Page could not be parsed (hub page, JS-heavy SPA, or no pricing detected).
- 429Rate limit exceeded.
- 500Server error.
Code examples
curl -X POST https://api.priceparse.com/v1/extract \
-H "Authorization: Bearer YOUR_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{"url": "https://stripe.com/pricing"}'
const response = await fetch('https://api.priceparse.com/v1/extract', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_KEY_HERE',
'Content-Type': 'application/json'
},
body: JSON.stringify({ url: 'https://stripe.com/pricing' })
});
const data = await response.json();
console.log(data);
import requests
response = requests.post(
'https://api.priceparse.com/v1/extract',
headers={
'Authorization': 'Bearer YOUR_KEY_HERE',
'Content-Type': 'application/json'
},
json={'url': 'https://stripe.com/pricing'}
)
print(response.json())
Common use cases
Industry trend reports
Hit /v1/pulse?industry=… on your weekly cadence to get a JSON-ready market intelligence digest. Pipe it into your Monday Slack post, your VC portfolio newsletter, or your sales team’s competitive battle cards. The summary is executive-grade prose; the stats and biggest-movers arrays are machine-readable for whatever downstream visualization you prefer.
Competitor pricing monitoring · main use case
Call /v1/diff weekly per competitor URL. You get a structured diff plus a plain-English summary every time something changes. Pipe to Slack, email, or a competitive-intel dashboard. The deterministic schema means a structural diff actually tells you something. No false positives from cosmetic DOM changes.
Pricing benchmark research
Use /v1/history to pull six months of pricing data across competitors. See how pricing has actually evolved in your market. Not what people remember it was, but what the snapshot tape says.
CRM enrichment
Enrich Clay/HubSpot prospect records with their tech stack's current pricing. Now also “this prospect's competitors raised prices last month” as a sales talking point. Reps walk into calls already holding the headline.
Pricing
| Plan | Monthly | Annual | Extractions / mo | Rate limit |
|---|---|---|---|---|
| Free | €0 | — | 50 | 10 req/min |
| Hobby | €29/mo | €289/yr (€24/mo) | 1,000 | 30 req/min |
| Team | €99/mo | €989/yr (€82/mo) | 5,000 | 60 req/min |
| Scale | €299/mo | €2,989/yr (€249/mo) | 20,000 | 120 req/min |
FAQ
How accurate is the extraction?
F1 score of 0.97 across 50+ tested SaaS pricing pages. A confidence score is returned with every call so you know when to trust it.
What happens if a page hides pricing?
We return confidence < 0.4 with a hidden-pricing detected note. Useful signal that the competitor moved to sales-led pricing.
Is there a rate limit?
Free: 10 req/min, 50/month. Hobby: 30 req/min, 1,000/month. Team: 60 req/min, 5,000/month. Scale: 120 req/min, 20,000/month. Per-minute limits are enforced at the gateway. Monthly limits enforce as HTTP 402 with an upgrade pointer.
Can I use this for production agents?
Yes. The API is designed for agent workflows: MCP-compatible, stateless, deterministic JSON output.