HackerFeeds

Docs

API Documentation

REST + TAXII 2.1 access to the HackerFeeds threat-intelligence feeds. JSON responses, Bearer-key auth, rate-limited per plan.

Quick start

The API works without auth for casual browsing (limited to 50 results per request, ~10 req/min per IP). For higher caps, generate an API key in your account settings.

# anonymous (rate-limited)
curl https://api.hackerfeeds.com/api/ransomware?limit=10

# authenticated
curl -H "Authorization: Bearer hf_XXXXXXXX" \
     https://api.hackerfeeds.com/api/ransomware?limit=500

The base URL above is illustrative — your deployment may differ. The current production endpoint is https://hackersfeeds-api.secaware.workers.dev while we transition to the custom domain.

Authentication

Authenticated requests carry a Bearer token issued from your account:

Authorization: Bearer hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Keys are 32 random bytes prefixed with hf_. Generated keys are shown once; store them somewhere safe. Each key carries scopes (see below) and an optional rate-limit override.

Manage keys: /account/api-keys

Scopes

Each key declares which operations it can perform. Older keys default to api:read + taxii:read.

ScopeDescription
api:readRead public REST endpoints (ransomware, cves, defacements, breaches, search)
api:writeReserved for future POST endpoints
taxii:readPull STIX 2.1 bundles via TAXII 2.1
reports:readRead previously generated reports
reports:writeGenerate new reports programmatically
subscriptions:writeCreate / delete watchlists
integrations:writeConfigure outgoing integrations (Slack, webhooks, etc.)

Endpoints

All responses include { rows, total, limit, capped, tier } so you can paginate + know when you’re hitting your plan cap.

MethodPathDescription
GET/api/ransomware
?limit=N&country=US&group=qilin&severity=critical
Ransomware victim feed (ransomware.live + custom sources)
GET/api/cves
?limit=N&severity=critical&kev=1
CVE feed from NVD + KEV catalog
GET/api/defacements
?limit=N&country=DE&tier=gov
Web defacements aggregated from Zone-H + mirrors
GET/api/breaches
?limit=N&severity=critical
Data-breach index (HIBP + paste-site crawlers)
GET/api/search
?q=lockbit&type=ransomware&limit=50
Cross-feed full-text search
GET/api/rl/groups
?limit=N
Threat actor group directory (ransomware.live Pro)
GET/api/rl/groups/:nameDetailed dossier for a single group
GET/api/rl/iocs
?limit=N&type=domain
IOCs (indicators of compromise) — IPs, domains, hashes
GET/api/rl/press
?limit=N
Threat-actor press statements + group communications

Example response (ransomware feed):

{
  "rows": [
    {
      "id": "evt_abc123",
      "victim": "Acme Corp",
      "group": "qilin",
      "country": "US",
      "sector": "Technology",
      "severity": "critical",
      "published_at": "2026-05-24T08:12:00Z",
      "description": "..."
    }
  ],
  "total": 234,
  "limit": 50,
  "capped": true,
  "tier": "anon"
}

Rate limits & result caps

TierRequest rateResult cap
Anonymous10 req/min50 results / request
Free100 req/hour500 results / request
Pro10 000 req/hour5 000 results / request
Business100 000 req/hour50 000 results / request

When your response is capped, capped: true + total tells you how many rows matched. Upgrade your plan or paginate via ?offset=N (where supported).

Errors

Standard HTTP semantics. All errors return JSON:

{ "error": "Plan limit reached: max_subscriptions=5",
  "limit_key": "max_subscriptions",
  "current": 5 }
400Invalid params / malformed JSON
401Missing or invalid Bearer token (when scope required)
402Plan limit reached — see limit_key for which one
403Key lacks required scope
429Rate-limited; check Retry-After header
5xxServer error — retry with backoff

TAXII 2.1 / STIX 2.1

We also speak TAXII 2.1 for direct ingestion into MISP, OpenCTI, Splunk and other CTI platforms. Each feed is a TAXII collection; you receive STIX 2.1 bundles.

# TAXII discovery
curl -H "Authorization: Bearer hf_XXXX" \
     https://api.hackerfeeds.com/taxii2/

# List collections
curl -H "Authorization: Bearer hf_XXXX" \
     https://api.hackerfeeds.com/taxii2/api/collections/

# Pull a feed
curl -H "Authorization: Bearer hf_XXXX" \
     https://api.hackerfeeds.com/taxii2/api/collections/ransomware/objects/

TAXII access requires the taxii:read scope and a paid plan.

Outgoing webhooks

Configure outbound webhooks for alerts in /account/integrations. Every request is signed:

POST https://your-server.example/hackerfeeds-webhook
Content-Type: application/json
X-HackerFeeds-Event-Id: evt_abc123
X-HackerFeeds-Timestamp: 1779621487
X-HackerFeeds-Signature: sha256=<hex>

{"id":"evt_abc123","kind":"ransomware","title":"...","severity":"critical","ts":"..."}

The signature is HMAC-SHA256(signing_secret, raw_body). Reject any request where the signature doesn’t match — the secret is shown once on integration creation.

SDKs & tools

No official SDKs yet — the API is small enough to call from any HTTP client. A few known-good integrations:

Found something missing? Spotted a bug? api@hackerfeeds.com