@signalsapi/client
v0.2.0
Published
Keyless JavaScript client for the public SignalsAPI reads — hiring-requisition search and the data-provenance statement
Maintainers
Readme
@signalsapi/client (JavaScript)
Keyless JavaScript client for the two public SignalsAPI reads. No API key, no dependencies, no build step — install it and the next line returns live data.
Requires Node 18+ (global fetch). ESM only.
Install
npm i @signalsapi/clientThe Python client of the same two reads is pip install signalsapi. This one is scoped
because npm's name-similarity filter permanently rejects the unscoped signalsapi — it
normalizes onto signals-api, an unrelated package published in 2016.
Use
import { compliance, reqsSearch } from "@signalsapi/client";
// The data-provenance guarantee — what this plane sources, and what it never serves.
const statement = await compliance();
console.log(statement.guarantee[0]);
// Who is hiring for {role, geo}. Real rows, no credentials.
const result = await reqsSearch({ role: "staff engineer", geo: "United States", limit: 5 });
for (const company of result.companies) {
console.log(company.company_id, company.pulse.open_req_count.value);
}Both calls return the response JSON verbatim — this client transcribes no response models, so what the API returns is what you get. Any non-2xx throws.
API
| Function | Endpoint | Parameters |
|---|---|---|
| compliance() | GET /compliance | — |
| reqsSearch() | GET /sandbox/reqs/search | role, geo, since, limit (all optional) |
role— full-text query over the raw posting title; every word must match.geo— country name, e.g."United States". A country that cannot resolve is a 422.since— ISO-8601 lower bound on when a req was first seen, passed through as written.limit— companies per page, capped by the sandbox demo ceiling.
Both accept baseUrl and timeoutMs in the same options object. There is no paging: a
non-null next_cursor in the response says the corpus continues past what a keyless call
may read, and walking it needs a key — see https://docs.signalsapi.com/.
Base URL
https://jobsapi.signalsapi.com/api/v1 — the gateway vhost, and the only base that serves
these routes publicly. api.signalsapi.com and the apex 404 them; ss.signalsapi.com
answers 401 before the API is reached.
Scope
Two reads, deliberately. This is the surface an evaluator can call inside one conversation without signing up; the paid contract is a different, key-gated client. Keeping this one schema-free is what bounds the cost of maintaining it by hand (signalsapi-3791/-4173).
MIT licensed.
