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.

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

6

APIs live today

1

Key for all of them

808K

Rows you can query

2h

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}
  • POST /v1/jobs/liveness
  • GET /v1/companies/{id}/jobs
170K postingsRefreshed every 15h · last 3hv1 · stable
Job Data docs

Event Data API

Live

Concerts, theatre, exhibitions and cinema with geocoded venues, and — where the source publishes them — per-showing schedules and remaining ticket counts recorded at every scrape.

  • GET /v1/events
  • GET /v1/events/{id}
  • GET /v1/venues/{id}
1.3K eventsRefreshed daily · last 6hv1 · stable
Event Data docs

Quotes Data API

Live

Attributed quotations with author, category and collection provenance, plus a quote-of-the-day endpoint that is deterministic for a date, so it can be cached.

  • GET /v1/quotes
  • GET /v1/quotes/{id}
  • GET /v1/quotes/random
521K quotationsOne-time import · last 35dv1 · stable
Quotes Data docs

Rates Data API

Live

The central bank's official daily AZN bulletin — 38 currencies and 4 bank metals — with the date you asked for AND the date the bank published, so a weekend's repeated numbers are marked as repeats rather than stored as a fresh publication.

  • GET /v1/rates
  • GET /v1/rates/latest
  • GET /v1/rates/{id}
116K ratesRefreshed daily · last 2hv1 · stable
Rates Data docs

Genome Source Releases API

Live

Which release each upstream genome data source is on — RefSeq, dbSNP, 1000 Genomes/IGSR and NCBI Datasets — read from each source itself rather than hardcoded, with how the latest probe went beside it. Release markers only: no sequence, assembly or variant data.

  • GET /v1/genome/releases
  • GET /v1/genome/releases/{id}
4 sourcesRefreshed daily · last 9hv1 · stable
Genome Source Releases docs

Reachability API

Live

Whether a watched URL answered us, why not if it did not, and how long it has been that way — with the vantage the request left from on every row. Status codes only: no page content is stored or served.

  • GET /v1/reachability
  • GET /v1/reachability/{id}
6 targetsRefreshed daily · last 9hv1 · stable
Reachability docs
Why one hub

One key, one envelope

Every response is { data, meta, error } with cursor pagination in meta.next and the same 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 a machine-readable schema at /v1/schema; 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 updated_after=2026-08-16T09:00:00Z
Plans

Start free. Pay in manat.

Starter

25 AZN / month

  • 5,000 requests a month
  • All live datasets
  • 10 req/s
Choose Starter

Scale

99 AZN / month

  • 250,000 requests a month
  • All live datasets, and new ones at launch
  • 100 req/s
Choose Scale

Every account starts free — 1,000 requests a month, all live datasets, no card. The plans above are for when you outgrow it: pick one and we will contact you to settle payment card to card. Already have an account? Ask from your dashboard.

Every response is { data, meta, error }. Learn one dataset and you have learned all of them — and where a source publishes nothing, you get null rather than a plausible guess.
The response envelope — specified once, identical on every dataset.
Built on softon.dev

Products reading these APIs in production.

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.