Quickstart: your first call in 5 minutes

Base URL https://api.arcadiumdata.io. JSON in, JSON out, one company domain as the key. You can start without any account and move to a key when you need more.

1. Call it without a key (1 minute)

Paste this into a terminal. No sign-up. Without a key you get 10 requests a minute and 100 a day per IP, and answers are previews of one entity at a time.

curl -s "https://api.arcadiumdata.io/v1/companies/stripe.com/pulse"
{
  "domain": "stripe.com",
  "asOf": "2026-10-25",
  "since": "2026-07-27",
  "count": 3,
  "data": [
    { "type": "hiring_up", "occurredAt": "2026-10-22", "observedAt": "2026-10-23", "...": "..." }
  ],
  "anonymous": { "...": "what a free key adds" }
}

Prefer a form? Use the playground: pick a route, press Send, copy the code.

2. Sign up for a free key (2 minutes)

Use the sign-up page, or the API. We email a one-time link; the page it opens shows your key once. The free plan has 1,000 calls a month, 20 requests a minute and pages of up to 25 rows. A work email and your company website are needed; disposable inboxes are refused.

curl -s -X POST "https://api.arcadiumdata.io/v1/account/signup" \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]", "companyDomain": "acme.com", "acceptTerms": true}'
# {"status": "check_email", "message": "...", "expiresInHours": 24}

3. Send your first authenticated request (1 minute)

Send the key as Authorization: Bearer <key> (or the header X-API-Key). A key opens the list and search routes that anonymous callers cannot use, and removes the preview limits.

export ARCADIUM_API_KEY=ak_live_...

# Who is hiring more? Needs a key (a list, not one company)
curl -s "https://api.arcadiumdata.io/v1/pulse/events?types=hiring_up&limit=25" \
  -H "Authorization: Bearer $ARCADIUM_API_KEY"

# Your plan, usage and remaining calls
curl -s "https://api.arcadiumdata.io/v1/me" -H "Authorization: Bearer $ARCADIUM_API_KEY"

Same call in Python and TypeScript:

import os, requests

r = requests.get(
    "https://api.arcadiumdata.io/v1/companies/stripe.com/pulse",
    headers={"Authorization": "Bearer " + os.environ["ARCADIUM_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.headers["x-quota-remaining"], r.json()["count"])
const res = await fetch("https://api.arcadiumdata.io/v1/companies/stripe.com/pulse", {
  headers: { Authorization: `Bearer ${process.env.ARCADIUM_API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error);
console.log(res.headers.get("x-quota-remaining"), (await res.json()).count);

Every response carries x-ratelimit-remaining and x-quota-remaining; see rate limits. A non-2xx answer is {"error": code, "message": text}; see error codes.

4. Watch companies, then upgrade when you outgrow the free plan (1 minute)

A watchlist tells you what changed at the companies you care about, without polling each one. The free plan tracks up to 100 companies. When you need more volume, move the same key to a paid plan.

# Track companies and read what changed since yesterday (free plan: up to 100 companies)
curl -s -X POST "https://api.arcadiumdata.io/v1/watchlists" \
  -H "Authorization: Bearer $ARCADIUM_API_KEY" -H "Content-Type: application/json" \
  -d '{"name": "Prospects", "domains": ["stripe.com", "spotify.com"]}'

curl -s "https://api.arcadiumdata.io/v1/watchlists/1/changes?since=2026-10-24" \
  -H "Authorization: Bearer $ARCADIUM_API_KEY"
PlanCalls a monthRequests a minuteTracked companiesRows per page
Free (€0)1,0002010025
Starter (€49 / month)25,000601,000100
Pro (€199 / month)250,00030010,000100
Business (€499 / month)1,000,00060050,000100
Scale (€999 / month)4,000,0001200200,000100

Upgrade on your account page, or by API. It returns a card checkout page; the key stays the same, and from the first paid call you have 25,000 calls a month, 60 requests a minute and pages of 100 rows.

curl -s -X POST "https://api.arcadiumdata.io/v1/account/checkout" \
  -H "Authorization: Bearer $ARCADIUM_API_KEY" -H "Content-Type: application/json" \
  -d '{"plan": "starter", "interval": "month"}'
# {"mode": "checkout", "url": "https://checkout.stripe.com/...", "plan": "starter", ...}

Official clients

Two small clients are generated from the OpenAPI contract, one method per route, with typed errors and rate-limit headers. They are single files with no dependencies, not packages: download one and put it in your project. arcadium.ts (TypeScript, needs a global fetch) and arcadium_client.py (Python 3.9+, standard library only). Both are regenerated whenever the API contract changes.

import { ArcadiumClient } from "./arcadium"; // the downloaded file

const api = new ArcadiumClient({ apiKey: process.env.ARCADIUM_API_KEY });
const { data, rateLimit } = await api.getCompanyPulse({ domain: "stripe.com" });
console.log(data, rateLimit.quotaRemaining);
import os
from arcadium_client import ArcadiumClient

api = ArcadiumClient(api_key=os.environ.get("ARCADIUM_API_KEY"))
r = api.get_company_pulse("stripe.com")
print(r.data, r.rate_limit.quota_remaining)

Next

Questions

Do I need a credit card?

No. The free key needs an email link only: 1,000 calls a month and 100 tracked companies. You pay only when you upgrade.

Does the key change when I upgrade?

No. The same key moves to the new plan as soon as the payment goes through, so deployed code keeps working.

Where do I keep the key?

In an environment variable on your server (ARCADIUM_API_KEY). Do not put it in browser code or a public repository; the key is shown once and can be replaced from your account page.