pricing to json

Extract public pricing tables and plan cards into JSON.

For competitor research, sales ops, and monitoring prep, you need stable plan fields, not brittle selectors. Try the demo, create a free key, then copy the first pricing extraction call.

pricing schemastable
{
  "plans": [
    {
      "name": "Starter",
      "monthly_price": 19,
      "currency": "GBP",
      "request_allowance": "5000/month",
      "included_features": ["Public extraction"],
      "requires_auth": false,
      "batch_available": false,
      "caveats": []
    }
  ]
}
why this lane

Pricing pages are high signal and usually visible.

Good fit for public plan cards, comparison grids, docs with plan limits, and visible product pricing.

works well

Visible tables and cards

Structured plan fields, feature bullets, and limit rows.

sometimes works

JS-rendered pricing pages

Works when rendered DOM exposes real pricing content.

clean failure

Hidden or gated prices

Login walls, region-personalized prices, sales-call-only pricing, CAPTCHA, and thin shells fail closed.

selector pain

Less brittle than hard-coded selectors.

Brittle scraper path

querySelector('.price-card .price')
querySelector('.plan-name')
querySelectorAll('.feature li')

One redesign and this cracks.

Prompt-shaped extraction

{
  "url": "https://example.com/pricing",
  "prompt": "Extract plans with name, monthly price, allowance, and included features as JSON"
}

You keep one shape and tune prompt detail.

First call

pricing prompt
curl -X POST https://hauntapi.com/v1/extract \
  -H "Content-Type: application/json" \
  -H "X-API-Key: PASTE" \
  -d '{"url":"https://example.com/pricing","prompt":"Extract plan names, monthly prices, request allowances, and included features as JSON"}'

First-call docs and custom services.

free key

Get free key, test one pricing page, then scale.

Free tier: 100 successful requests per month. No credit card.