One key. Every dataset you were about to scrape.

softon.dev hosts independent data APIs — jobs, events, quotes, and whatever we ship next — behind one account, one key and one response envelope. Read the docs for one of them and you can read the docs for all of them.

Read the docs

$ curl -H "Authorization: Bearer sk_live_…" https://api.softon.dev/v1/jobs?q=golang

2

APIs live today

1

Key for all of them

106

Records indexed

1h

Since the last refresh

The catalog

Pick a dataset. The rest is identical.

Every API on softon.dev ships the same auth, pagination, filtering, error shape and rate-limit headers. New services drop into this grid — and into the docs — without a new mental model for anyone.

Job Data API

Live

Postings from company career pages and boards, deduplicated per source, with the employment type, job function and career level the source itself publishes, plus the full description on a detail fetch.

  • GET /v1/jobs
  • GET /v1/jobs/{id}
  • GET /v1/companies/{id}/jobs
94 postingsRefreshed every 6h · last 1hv1 · stable
Job Data docs

Event Data API

Live

Concerts, theatre, exhibitions and cinema with geocoded venues, per-showing schedules and remaining ticket counts recorded at every scrape.

  • GET /v1/events
  • GET /v1/events/{id}
  • GET /v1/venues/{id}
12 eventsRefreshed every 12h · last 1hv1 · stable
Event Data docs

Quotes Data API

Planned

Planned: attributed quotations with source, author, era and topic tags, and a deterministic quote-of-the-day endpoint you can cache. Nothing feeds it yet, so the routes below answer 404.

  • GET /v1/quotes
  • GET /v1/quotes/random
  • GET /v1/authors/{id}
Not yet scheduledv1 · planned
Quotes Data docs

Your dataset here

Next

The catalog is a registry, not a hand-built page — a new service registers its name, endpoints and docs tree and appears here. Company data and flight data are in the queue.

Request a dataset
Why one hub

One key, one envelope

Every response is { data, meta, error } with cursor pagination in meta.next and the same five error codes. Write your client once; point it at any dataset. Rate limits and usage roll up to a single account.

Docs that grow themselves

Each service publishes an OpenAPI spec; the portal renders navigation, endpoint pages, field tables and snippets from it. Adding an API adds a docs section — nobody writes the boilerplate twice.

Server-rendered, so it's quick

The site and dashboard are Go templates with HTMX for the interactive parts: search, key management and live request testing return HTML fragments. No client bundle to ship, nothing to hydrate, works with JS off for the parts that matter.

Quickstart

Three minutes to the first row

Sign up, copy the key, call the endpoint. The same snippet works against every dataset in the catalog — swap the path and the filters. No SDK to install: these are the standard library in each language, and they run as they are.

curl -G https://api.softon.dev/v1/jobs \
  -H "Authorization: Bearer $SOFTON_KEY" \
  -d q=golang -d remote=true -d posted_after=2026-08-01
Plans

Free while you're building.

Free

$0 / month

  • 1,000 requests a month
  • All live datasets
  • 2 keys, 5 req/s
  • Community support

Scale

Talk to us

  • Volume pricing per dataset
  • Bulk snapshots and S3 drops
  • 99.95% SLA, 99.99% option
  • Shared Slack channel
“Every response is { data, meta, error }. Learn one dataset and you have learned all of them — and when a field is missing from the source, you get null, never a plausible guess.”
the response envelope, documented once and shared by every dataset

Your key works on every dataset in the catalog

No card for the free tier. Every response carries X-RateLimit-Remaining, so your client can see its budget without a dashboard to check.