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

  1. Sign up at app.priceparse.com. You get 100 free extractions per month, no credit card.
  2. Copy your API key from the dashboard.
  3. 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.

Method
POST /v1/extract
Content-Type
application/json

REQUEST 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.

Method
POST /v1/diff
Content-Type
application/json

REQUEST 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.

Method
GET /v1/history?url=...&limit=10
Query params
url (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.

Method
GET /v1/pulse?industry=crm&window_days=30
Query params
industry (required: crm, martech, devtools, hr_tech, fintech, data_infra, ai_tooling, analytics, support, project_mgmt), window_days (optional, default 30, max 90)
Cost
Free — does not consume your monthly quota. Cached server-side for 6h.

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)

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

PlanMonthlyAnnualExtractions / moRate limit
Free€05010 req/min
Hobby€29/mo€289/yr (€24/mo)1,00030 req/min
Team€99/mo€989/yr (€82/mo)5,00060 req/min
Scale€299/mo€2,989/yr (€249/mo)20,000120 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.