Skip to main content
Phishing feeds list URLs that host phishing pages or malware. This source checks those feeds for your domain or brand, so you can see whether a page built around your name is already listed. There are two ways in: A quick search on a domain runs the lookup. A quick search on a brand runs the scan. See Quick search. Availability: Expert Search, included in every edition. Cost: no metered allowance. With an API key, each call that returns 2xx uses 1 unit of your monthly API Calls allowance, and a non-2xx response is refunded. Every call also counts toward the per-second rate limit. See Rate limits.

Look up a domain

phishing_search checks nine phishing and blocklist feeds for a domain. The answer comes back in the same response.
source takes one of these feed names, spelled exactly: Phishtank · Phishhunt · Openphish · Phishing Army · Phish Stats · Hagezi CTI Feed · ShadowWhisperer BlockLists · Mitchellkrogza Phishing List · Malware Filter The response holds a count of matching entries across all pages and the entries of this page in results. There are no next or previous links: page with page until you have read count entries.
  • domain — the domain the feed lists.
  • url — the listed URL.
  • db — the feed that lists it, one of the source names.
  • created_at — when the entry was recorded, in UTC. date_from and date_to filter on it.

Scan the feeds for a term

The scan reads DarknetSearch’s own copies of four phishing feeds and keeps every URL that contains your term. How the scan matches:
  • Case-sensitive substring of the whole URL. acme matches https://acme-login.com/verify and http://login.example/acme/. Acme does not match either.
  • A full domain only matches URLs that contain it literally. acme.com misses acme-login.com. Send the shortest distinctive lowercase token of your brand.
  • About the last 90 days. The feed copies are refreshed once a day, and an entry is dropped 90 days after DarknetSearch first stored it.
1

Start the scan

create_phishing_search_request takes one field, search_term: required, up to 255 characters.
The call returns 201 with the scan:
Keep the id. A scan you start here runs once and does not refresh. is_monitoring, alert_cycle and is_email are monitoring settings this scan does not use. is_reporting and report_id are filled only on scans that a report started.
2

Poll until it ends

Fetch the scan with get_phishing_search_request until status is finished.
status is in_progress while the scan runs and finished when it ends. There is no failed state: a scan that hits an error also ends finished, with the URLs matched so far. Poll every 10 seconds or slower.
3

Read the URLs

list_phishing_search_result returns the URLs of one scan. Pass the scan id as searchrequest.
  • searchrequest is required.
  • page starts at 1. page_size defaults to 100, max 1000.
  • The response holds count, next, previous and results. next and previous point at an internal service, so page by raising page until next is null.

What each scan result means

Each result is one URL. link, source, date_created, id and searchrequest mean the same on every row. The other fields depend on the feed, so read source first.
  • link — the URL the feed lists.
  • source — the feed it came from.
  • date_created — the date DarknetSearch first stored the feed entry (YYYY-MM-DD).
  • id — the result ID, for the single-result and delete calls.
  • searchrequest — the scan it belongs to.
For PhishTank, verified and online are the feed’s status when the scan ran. For URLhaus, online is the status when DarknetSearch first stored the entry (date_created). Keeping only rows where verified or online is true drops every OpenPhish and Phishunt row, so read them together with source.
To fetch one result again, call get_phishing_search_result with its id. To follow a host from a result, search it in New domain registrations to see when it was registered, or in SSL transparency logs to see its certificates.

Monitor a domain

To receive new feed entries for a domain without repeating the lookup, create a monitor on the Phishing service (11 in the service list) with {"domain": "acme.com"} as args. It runs the same lookup as phishing_search, so each match carries domain, url, db and created_at. See Create and manage monitors and Read and triage monitor matches.

List and delete scans

list_phishing_search_request returns your organization’s scans, newest first.
  • page starts at 1. page_size defaults to 20, max 100.
  • ordering takes create_date, -create_date, update_date or -update_date. Default -create_date.
Both deletes return 204 and are permanent. Delete a scan only after it is finished.

Errors

Endpoints