Skip to main content
Like Keyword Search, but instead of per-domain aggregate counts, returns the individual matching URLs with page title, occurrence count, and when each was last seen. Use this after Keyword Search to drill into the specific pages behind a high occurrence count.

Request

POST /v1/search/keyword/urls · Required scope: search:keyword (pro and ultra tiers)
ParameterTypeRequiredDefaultDescription
keywordsstring[]YesUp to 10 keywords to match against harvested URLs and page titles, e.g. ["admin-panel"]
start_datestring (date-time) | nullNoInclusive start filter, clamped by query_window_days
end_datestring (date-time) | nullNoInclusive end filter
sort_directionasc | descNodescMust stay constant across pages
cursorstring | nullNoPagination token
limitintegerNo251–500, clamped to your tier’s max_rows

Example request

curl -X POST https://api.vantaprism.me/v1/search/keyword/urls \
  -H "api-key: $VANTAPRISM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "keywords": ["admin-panel"], "limit": 50 }'

Response

200 OK — array of KeywordUrlResult, cursor-paginated.
{
  "data": [
    {
      "url": "https://admin-panel.acme-corp.com/login",
      "domain": "acme-corp.com",
      "title": "Admin Panel - Sign In",
      "occurrence": 9,
      "last_seen": "2026-05-02T14:22:31Z"
    }
  ],
  "nextCursor": null,
  "meta": {
    "request_id": "req_01HZXK3Q7N8YV6F3M2P9JABCDE",
    "took_ms": 51.4,
    "tier": "pro",
    "masked_fields": []
  }
}
FieldDescription
urlFull matching URL from browser history
domainRegistrable domain extracted from url
titlePage title at time of visit
occurrenceNumber of times this URL was visited across matched victims
last_seenMost recent visit timestamp, may be null if unavailable

Pagination

Cursor-paginated — see Pagination.

Errors

StatuscodeCause
400VALIDATION_ERRORkeywords is empty or exceeds 10 items
400INVALID_CURSORTampered or stale cursor
403FORBIDDEN_SCOPEKey lacks search:keyword (free tier)
See Errors for the full catalog.

Tier notes

This endpoint requires search:keyword, which is not included on the free tier — a free-tier key receives 403 FORBIDDEN_SCOPE. Both pro and ultra tiers receive url unmasked — the free-tier masking rule for url in Data Masking never applies here, since free tier cannot call this endpoint at all.