StackPulse Dashboard

Developer reference

GET /v1/lookup/:domain

Returns the stored technology profile for a public hostname. A cache miss scans the homepage over HTTPS and upserts the result.

Authentication

Send a workspace key in x-api-key. Calls with no key, or with the public demo key demo_free_key, are limited to 10 lookups per IP per UTC day and read the same cached profile.

curl https://your-host/v1/lookup/allbirds.com \
  -H "x-api-key: sk_live_your_key"

Success body

{
  "domain": "allbirds.com",
  "technologies": {
    "eCommerce": ["Shopify Plus"],
    "Payment": ["Stripe", "PayPal", "Shop Pay"],
    "Buy Now Pay Later": ["Afterpay"],
    "Marketing": ["Klaviyo"],
    "Advertising": ["Meta Pixel", "TikTok Pixel"],
    "Analytics": ["GA4"],
    "Tag Management": ["Google Tag Manager"],
    "Reviews": ["Yotpo"],
    "Infrastructure": ["Cloudflare"]
  },
  "last_scanned_at": "2026-10-24 05:00:00",
  "cached": true
}

Successful responses set Cache-Control: public, max-age=604800, s-maxage=2592000 so browsers keep a copy for 7 days and a shared edge, including Cloudflare, can keep it for 30 days. Quota figures are response headers, not part of the cached body.

Supported technologies

GET /v1/technologies lists every technology the scanner can detect, grouped by category. It is free and does not use quota.

Bulk export

GET /v1/export/csv streams matching domains as CSV. GET /v1/export/count returns how many domains match without charging anything. Both need a paid x-api-key. Non-developers can use the same filters at /export.html.

ParameterMeaning
ecommerceComma-separated platforms, e.g. shopify,woocommerce
paymentComma-separated gateways, e.g. stripe,paypal
marketingComma-separated tools, e.g. klaviyo,ga4,meta_pixel
techAny technology name from /v1/technologies
limitRows to return. Default 1,000, maximum 50,000

Values inside one parameter are OR; parameters are combined with AND. Matching is case-insensitive and shopify also matches Shopify Plus.

curl -o leads.csv "https://your-host/v1/export/csv?ecommerce=shopify&payment=stripe&marketing=klaviyo&limit=5000" \
  -H "x-api-key: sk_live_your_key"

You are charged one credit per row actually delivered: min(limit, matches). The monthly quota is used first, then rollover credits. If the balance is short the request returns 402 with required and available and nothing is charged. Columns: Domain, eCommerce, Payment, Marketing, Analytics, Infrastructure, LastScannedAt, Other.

Quota and rollover

PlanPriceMonthly lookups
Starter$9910,000
Business$29950,000
Enterprise$799200,000

The monthly counter resets at 00:00 UTC on the 1st. One-time packs are $29 for 3,000, $99 for 20,000, and $199 for 60,000. They are deducted only after the monthly quota is gone, and each lot expires 12 months after purchase.

Dunning

  1. past_due opens a 7-day grace period. Calls succeed and include X-Payment-Warning: past_due.
  2. When grace ends, the key becomes inactive and returns 402. Remaining top-up credits can still be spent until they hit zero.
  3. subscription.canceled closes the workspace immediately, including unused top-up credits.

Errors

StatusWhen
400The domain is not a public hostname.
401The API key does not exist.
402Quota is gone, grace has ended, or the subscription is canceled.
429The free daily diagnostic limit was reached.
502The origin could not be scanned. The credit is refunded.

Billing events

Subscription and top-up payments are confirmed on StackPulse's side. A completed subscription resets monthly_quota_used to 0. A completed top-up adds a 12-month credit lot. You do not need to configure a callback URL.