Registrars · Resellers · Registry Operators

You cannot read every registration. You can know which of your own names are hosting phishing today.

Registration screening is a guessing game played against an adversary who gets to test your rules for free. Portfolio intersection is not. This page is about taking a daily list of DNS-verified, currently-resolving phishing domains, intersecting it with the names you sponsor or serve, and turning the overlap into a queue your abuse team can actually work through.

390,000+DNS-verified phishing domains, every one resolving right now
Every 24hFull rebuild, plus a changelog of what was added and removed
100Domains per batch request, one lookup each
Under 50 msTypical latency for a single hostname lookup
Abuse desk triage
Zone-file intersection
Account-takeover response
Reseller channel oversight
RDAP & WHOIS records
Suspension workflow
Home / Use Cases / Domain Registrars
How this page is laid out

Four questions an abuse team asks before buying anything

Not "does phishing exist" — everyone at a registrar knows it does. These are the operational questions that decide whether a threat list becomes useful or becomes another unread report.

1

Our own zone

How to produce a defensible exposure number by intersecting the names you sponsor with a daily verified list, and what that number does and does not prove.

2

The queue

Where a verified match belongs in an abuse workflow that still ends with a person signing off on a suspension.

3

The order of work

Why current resolution state, not report age or complainant volume, is the sane way to sequence a backlog of open cases.

4

The limits

What a feed match establishes as a matter of observed fact, what it never establishes, and why saying so out loud protects the registrar.

The real constraint

The abuse desk is a throughput problem wearing a detection costume

Registrars rarely fail to act because nobody told them. They fail because the telling arrives faster than anyone can read it, in a dozen incompatible formats, with no way to sort the certain from the speculative.

08:02 · the mailbox opens

Five notices, five completely different documents

A brand-protection vendor sends a machine-generated notice with forty hostnames and a screenshot per name. A bank's fraud team forwards a customer complaint with the URL buried three quotation levels deep in a reply chain. A volunteer researcher sends a plain-text list with no evidence attached and an implied deadline. A trademark firm sends something that reads like a cease-and-desist but is really a request for contact details. A hosting company forwards a report it received about a domain you sponsor but do not host.

08:04 · the hit rate

Roughly one message in five is genuinely yours

Perhaps one of those notices concerns a name that you sponsor, that is currently resolving, and that is currently serving a credential-harvesting page. The other four consume exactly the same reading time as the one that matters, and nothing on the outside of any of them tells you in advance which is which.

08:11 · still classifying

Cost per item is dominated by classification, not decision

An analyst spends most of their attention working out what a report is even about — which domain, which registrar of record, whether the complained-of content sits at the apex or in a subdirectory, whether the name still resolves at all — and comparatively little on the part that actually requires judgement.

by mid-afternoon · the failure modes

The wrong distribution of effort produces both criticisms

Registrars get accused of slow action on the obvious cases and occasionally hasty action on the ambiguous ones, and both come from the same root cause: the analyst who has read two hundred notices has stopped reading carefully by the time they reach the one that mattered.

before the message is opened

One lookup answers the expensive question first

When a report arrives naming secure-login-example.tld, a single lookup tells you in well under fifty milliseconds whether that exact hostname is currently on a list of domains independently observed and confirmed to be resolving and serving phishing. That is not the whole investigation, but it is the piece that was eating the analyst's day, and it arrives before they open the message rather than after.

at the queue split

Two lanes, and nothing is downgraded

Reports concerning names already on the list get routed into a lane with a shorter checklist. Reports concerning names not on the list keep every bit of the human scrutiny they had before, because absence from the list is not evidence of innocence — it is only evidence that nothing has been observed yet.

the following quarter

The second-order effect matters more than the first

Once classification is cheap the desk can afford the work it always wanted and never had hours for: sweeping its own portfolio proactively rather than waiting to be told, re-checking open cases daily to see which have gone dark on their own, and giving reseller channels a monthly figure instead of an argument. Those are the activities that reduce inbound report volume at source.

Attack shapes

Eight ways phishing arrives at a registrar, and they need different answers

Treating all of them as one category called "abuse" is why abuse queues stall. The evidence you need, and the action available to you, differ sharply between them.

Every situation below ends with a hostname resolving to a page that is stealing somebody's credentials, which is why they all land in the same inbox. They diverge completely before that point, and they diverge again immediately afterwards in terms of what a registrar can legitimately do about them. A bulk-registered throwaway name and a fifteen-year-old business domain compromised last Tuesday both appear in the same list of confirmed phishing hosts; suspending the first is routine, and suspending the second punishes the victim. The list supplies the fact. Your workflow has to supply the context.

Bulk registration from one account

Hundreds of names in a single session, generated from a wordlist, paid with one instrument, all pointed at the same nameservers inside the hour.

Registrar account takeover

The registrant's own control panel is phished, then used to change nameservers, unlock names, or add a mail forward that quietly intercepts the recovery loop.

Transfer-out fraud

An auth code lifted from a compromised panel moves a valuable name away mid-incident, so the registrar of record changes while the complaint is still being triaged.

Expired-domain re-registration

A name previously used for phishing drops, becomes available, and is picked up again for exactly the same purpose, sometimes by the same operator.

Compromised legitimate registrant

A long-held domain with real business behind it starts serving a login clone in a subdirectory after a content-management system is breached.

Reseller channel abuse

Volume arrives through a reseller whose customer verification is thinner than yours, while the accreditation obligations still land on the sponsoring registrar.

DNS hosting without sponsorship

You did not sell the name but you serve the zone, so you hold the record that makes the phishing host reachable and you are asked to act on it.

Contact-record fraud

Registrant details in WHOIS and RDAP are fabricated and the published abuse contact points at an unread mailbox, so every escalation route dead-ends silently.

The two red categories are not abuse by your customer. Account takeover and transfer-out fraud have a victim who is also your paying registrant. A phishing match on those names starts an incident-response conversation, not a suspension — the same reasoning the incident response use case works through in detail.
Portfolio exposure

Intersect your zone with the feed and you have your own number

Not a vendor's claim about the industry. A count of names you sponsor that are, as of this morning's build, confirmed to be resolving and hosting phishing.

The mechanics are unglamorous and that is the point. You already have a list of every domain you sponsor, or every zone you serve, because you cannot run the business without one. The daily feed gives you the complete phishing database as CSV, delivered as a separate subscription alongside a changelog of what was added and removed since the previous build. Sort both lists, join them on the domain column, and the output is the intersection. On a Unix box that is one comm -12 against two sorted files and it finishes faster than the download did. Loaded into a database it is one indexed join. Nothing about this is difficult, which is precisely why it is odd that so few registrars have the number to hand.

The output is a count and a list, and the list is the useful half

What you get from running it is an exposure figure computed from your own data rather than from somebody's marketing: these specific names, sponsored by you, appear in a database of hosts independently verified as currently resolving and currently phishing. Run the same job every morning and you get a time series, and that series is what turns an argument into a management conversation — because it answers the questions executives actually ask about whether this is getting worse, whether last quarter's verification change helped, and which part of the business is generating it.

Slice it and it starts driving decisions rather than describing them

The raw intersection is a number. The same rows grouped four different ways are four separate operational findings, and each one points at a lever somebody in the business already controls.

  • By reseller — whether one channel partner produces a disproportionate share, which is a contractual conversation with evidence attached rather than a suspicion.
  • By TLD — whether a particular registry's promotional pricing is pulling throwaway registrations into your book.
  • By account age and time-to-first-appearance — a direct measurement of how quickly names go bad after they are sold, which is the single most useful input into any registration-time screening rule you might later write.
  • By payment method — the same picture again, sharpened, and usually the fastest of the four to act on.

Which shape fits your book: the daily feed or the API?

 The daily CSV feedThe check & batch API
Shape of the job The complete database downloaded once a day; matching then happens entirely on your own infrastructure. Individual or batched lookups made at the moment you need an answer, inside a request or a support tool.
What it costs A separate subscription, with no per-lookup charge at all once the file is sitting on your own disk. One credit per domain. The $99 Growth package works out at $0.0040 per lookup and the $249 Professional package at $0.0025 across a hundred thousand.
Batch size The whole database in one file, plus the added and removed changelog for the day. Up to a hundred domains per POST, one lookup each, one round trip.
Fifty thousand names One download and one join, and the same cost again tomorrow however often you re-run it. Five hundred requests and fifty thousand credits, with credits staying billed monthly.
Who it suits Registrars sweeping an entire sponsored book every morning, where per-lookup cost would dominate. Smaller books, resellers and DNS hosting providers, and quarterly rather than daily sweeps.
Where it stops Nothing to call when you need a verdict inside a live request, so most registrars run both. Checking the whole book daily gets expensive; that crossover point is easy to work out from your own name count.
Start with a read-only sweep. Run the intersection for a fortnight and change nothing else. You will learn your true daily volume, discover which reseller accounts dominate it, and find out whether the number is ten names or ten thousand — all before you design a workflow around it.
Archive the build, not only the answer. Keep the raw daily CSV rather than just the intersection. When someone asks in six months why a particular name was suspended on a particular date, the archived build for that date is the answer, and regenerating it afterwards is impossible.
The database-stats endpoint is the cheapest monitoring you will ever add. It returns the current database size and the last-update timestamp, which is exactly what a health check needs to confirm your nightly pull is not silently serving a stale file.
What verification means

Every entry resolves, which is why the count is smaller than you expect

A list that only ever grows is a list that slowly stops being useful. The verification standard here is what keeps the file worth joining against.

Most aggregated abuse data is cumulative. Something gets reported, it goes in, and it stays in for as long as the archive exists. That is defensible for research and actively harmful for operations, because within a year a large fraction of the file describes hosts that stopped answering months ago. Join your zone against that and the intersection is dominated by history — names used for phishing once, now parked or dead or resold to somebody legitimate, generating work for an analyst whose job becomes establishing that nothing is happening.

Resolving, not merely reported

DNS verification is the admission criterion. A name somebody complained about but which never resolved, or which has since gone dark, is not in the file consuming your analyst's time.

Rebuilt on a daily cycle

The whole database is regenerated every twenty-four hours and entries that stop resolving are dropped rather than retained, so the file you join against this morning reflects this morning.

A live population, not a running total

The 390,000-plus figure counts hosts that answered a DNS query recently. Every row in your morning intersection therefore describes something that is reachable, not something that once was.

A work queue rather than an archive

For a registrar that distinction is the entire value proposition: the size of the intersection tracks reality instead of tracking how many months you have been subscribed.

Additions are new exposure

The day's additions intersected with your zone are names that were fine yesterday and are hosting phishing today. Of everything the feed produces, this is the signal that most deserves an alert.

Removals close cases for you

Removals intersected with your open cases are incidents that ended on their own — the host went dark, the compromised site was cleaned, the operator moved on. Reconciling against them each morning stops the desk chasing work that is already over.

Sequencing

Order the queue by what is still resolving, not by what came in first

A backlog worked in arrival order spends its best hours on domains that stopped mattering weeks ago. Resolution state is the cheapest and most honest priority signal available to you.

Open case A

Eleven days old, dark since the morning after

Reported eleven days ago, three complainants attached to the ticket, and a domain that has not resolved since the day after the report landed. Arrival order puts this case at the top of the queue. Complainant count puts it at the top as well.

Open case B

Two hours old, resolving forty minutes ago

Arrived this morning from a single anonymous submitter, with no evidence pack and nobody chasing it. The domain resolved forty minutes ago and sits on today's build alongside everything else confirmed to be phishing right now.

Why both instincts are wrong

Harm is a function of reachability, not of paperwork

Nobody is being phished by a host that does not answer, and somebody is being phished right now by a host that does. Sequencing by current resolution state is the correction to both arrival order and complainant count, and it is the one prioritisation rule that survives contact with a real backlog.

The mechanism

One join, re-run every morning

Intersect your open-case domains against the fresh build. Cases whose domains appear stay in the active queue, sorted so the longest-live rise to the top because those represent accumulated exposure. Cases whose domains have dropped out move to a lower-priority lane with the date they stopped appearing — not closed outright, because a name can go quiet for a fortnight and come back.

At appeal

A dated observation beats a supplied screenshot

A registrant whose name has been suspended will often say the content is gone. Checking whether the domain still appears on today's build, and whether it appeared on the removals list, gives you an externally observed answer. It does not settle the appeal on its own, because content can move rather than stop, but it converts a he-said-she-said into a documented observation.

The boundary

The list fills the queue; a person still empties it

Suspension has real consequences for a real business, some of the names on any morning's intersection belong to compromised victims rather than to attackers, and telling those apart is a judgement no list can make. The correct architecture puts the list upstream of a person — it fills the queue, ranks it, attaches evidence and flags duplicates, then a trained analyst decides. Registrars who wired a feed straight into an automatic serverHold with no review have generally regretted it, usually the first time a customer's compromised site went offline in its entirety over one bad subdirectory.

Rank by live-days, not report-days. The number worth surfacing on a case is how many consecutive daily builds the domain has appeared on. That is a direct measure of how long a phishing host has been reachable while sitting in your book.
Do not auto-suspend on a match alone. The list confirms the host is resolving and phishing. It cannot distinguish a purpose-registered attack domain from a hacked small business, and those two require opposite responses.
Reconcile against removals daily. Cases whose domains have dropped off the build are usually over. Moving them out of the active lane automatically is the cheapest queue reduction available to you.
Evidence and its edges

What a complaint asserts, and what a verified match establishes

These are two different kinds of statement, and a registrar that keeps them separate in writing is far better placed when a decision is challenged.

An inbound abuse report asserts

That a page at this address looked like a brand the complainant cares about
That the complainant believes the intent was to steal credentials
That some right of theirs — trademark, contract, statute — has been infringed
That the registrar is the correct party to act, which is frequently untested
That the situation held true at whatever moment the complainant happened to look

A verified feed match establishes

That this exact hostname was verified as resolving in DNS on this dated build
That it was confirmed as hosting live phishing content and categorised as such
That the observation is independent of any complainant's commercial interest
That the same observation is reproducible against the archived daily build
That the finding carries a date, a DNS status and a confidence value you can cite

Read the right-hand column carefully, because the honesty in it is the useful part. A match is evidence that confirmed live phishing hosting was observed on a dated build. It is not a legal determination. It does not decide whether the registrant is culpable, whether a trademark was infringed, whether the content was placed by the account holder or by whoever compromised them, or whether suspension is the proportionate remedy under your registration agreement and the accreditation framework you work within. Those are questions for your policy, your counsel and your analyst, and a threat feed that claimed to answer them would be selling you something it cannot deliver.

Instead of “a complainant says this is phishing”, the case file reads: this hostname appeared on the build dated the fourteenth with a DNS status of resolving and a phishing categorisation, and appeared on eleven consecutive builds thereafter.

What the match does is remove one specific uncertainty from the middle of the process, at a cost of roughly a quarter of a cent, and remove it in a form you can put in a case file. That kind of record is checkable by anyone holding the same subscription, it does not depend on trusting the complainant, and it is exactly the sort of statement that holds up when a registrant's lawyer asks what you actually knew and when you knew it.

Absence from the list means the hostname is not on it — nothing more. A domain registered an hour ago and used for the first time this afternoon will not have been observed yet. A phishing kit served only to visitors from one country, or only behind a one-time link, may never be observed at all. Content living at a path on a shared host can be live while the apex domain looks entirely unremarkable.
This is a floor under your abuse process, not a ceiling over it. It makes the confirmed cases cheap so your people can spend their judgement on the unconfirmed ones. Registrars who also run hosting will recognise the same reasoning in the hosting provider and threat intelligence use cases.
Wiring it in

Three integration points, none of which need a project

A lookup in the ticketing pipeline, a nightly join against the zone, and an optional check in the provisioning path. Everything else is reporting built on top of those three.

1

The abuse-ticket pipeline

Start here, because it pays back fastest and changes no customer-facing behaviour. Whatever parses inbound abuse mail already extracts hostnames; add a single GET against the check endpoint for each extracted name before the ticket is created. The response carries domain, is_phishing, category, dns_status, last_checked, confidence and database_size — enough to set a queue, stamp a priority and attach dated evidence without an analyst touching it. Where one message names several domains, use the batch endpoint instead.

2

The nightly zone intersection

Pull the day's CSV and the changelog, join against your sponsored-names table, write the intersection to a table stamped with the build date, and alert only on the delta. Keep the archived builds. This is the piece that turns the whole exercise from a lookup service into a measurement programme, and it is typically fifty lines of whatever language your operations team already writes in.

3

Optionally, the provisioning path

A check at domain:create time catches the narrow case of a name used for phishing, dropped, and now being re-registered while still on the current build. It costs one credit to screen for. Be honest about the scope: this is not general-purpose registration screening, it will not recognise a brand-new name assembled from a wordlist five seconds ago, and treating it as a hard gate rather than a flag will annoy legitimate customers who happened to buy a name with a past.

Single lookup, batch check, nightly intersection
# One hostname pulled from an inbound abuse report
curl "https://phishingdetectionapi.com/api/v1/check?domain=secure-login-example.tld&apikey=YOUR_KEY"

# Several hostnames from one report, or a slice of your own zone.
# Maximum 100 domains per request, one credit per domain.
curl -X POST https://phishingdetectionapi.com/api/v1/batch \
 -H "Content-Type: application/json" \
 -d '{"apikey":"YOUR_KEY","domains":["example-one.tld","example-two.tld"]}'

# Nightly portfolio intersection, once the CSV feed is in place
sort -u sponsored-names.txt > /tmp/zone.sorted
cut -d, -f1 feed-today.csv | sort -u > /tmp/feed.sorted
comm -12 /tmp/zone.sorted /tmp/feed.sorted > exposure-$(date +%F).txt
Server-side only. The key travels in a query parameter or a POST body, so it belongs in back-office code. If a support console needs the verdict, have your own backend make the call and return the answer.
Alert on staleness, not only on matches. The realistic failure mode is a nightly pull that quietly stops working. Compare the last-update timestamp from the stats endpoint against your local file and page someone if the gap drifts past forty-eight hours.
From the abuse desk

Questions registrars ask before the first pull

Most of these are objections rather than questions, and they deserve straight answers rather than reassurance.

Can we use a match as the sole basis for suspending a domain?

That is a policy decision for you and your counsel, and this page will not pretend otherwise. What the match gives you is a dated, reproducible observation that a specific hostname was resolving and hosting phishing on a specific build — evidence of confirmed live phishing hosting, and nothing beyond that.

  • It is not a legal determination of any kind.
  • It says nothing about who placed the content, which is the whole question in a compromise.
  • It does not weigh proportionality under your registration agreement or your accreditation framework.
What works in practice: registrars who handle this well use the match to fill and rank a queue, then apply their existing suspension criteria with a human in the loop. The list makes routine cases cheap to identify; it does not, and should not, make the decision for you.
We sponsor four million names. Is the API or the feed the right shape?

The feed, without much doubt. Checking four million names daily through the API would be four million credits a day, whereas the feed is one download of the complete database after which matching happens on your own infrastructure at no per-lookup cost — and it removes any dependency on an outbound call succeeding during your nightly batch window. The API then earns its place alongside the feed rather than instead of it, which is why most registrars of any size end up running both.

  • Single lookups in the abuse-ticket pipeline, where you want an answer inside the request.
  • Batch calls when one inbound report names a handful of domains at once.
  • Ad-hoc checks fired from a support console while someone is on the phone.
What about names we host DNS for but did not sponsor?

Include them in the intersection as a separate group. You hold the zone that makes the host reachable, so you will receive reports about them regardless of who sold the name, and knowing which of them are confirmed phishing hosts before the report arrives is worth the credits.

The grouping is the point: the action available to you differs. For a sponsored name you have registrar-level remedies; where you only serve DNS you are looking at removing or sinkholing records and notifying the sponsoring registrar. Tag the group at intersection time so the queue routes it correctly and nobody has to work it out per ticket.
Will this catch a phishing domain registered ten minutes ago?

No, and any list claiming otherwise is describing a heuristic rather than a verified observation. Inclusion requires the domain to have been observed resolving and confirmed as hosting phishing, which means something has to happen before it can be recorded. A name registered ten minutes ago and not yet used will not be there.

What narrows the gap: the daily rebuild plus the additions changelog. Once a name does go live it can appear on the next build, and the additions file intersected with your zone flags it as new exposure the following morning. Registration-time screening for genuinely new names is a different technique with different trade-offs, and it should not be sold to you as the same thing.
One of our resellers accounts for most of the matches. What now?

You now get to have the conversation with numbers instead of impressions. Group your daily intersection by reseller, look at the share and the trend over a couple of months, and take that to the channel manager. The useful metric is not raw count, which merely tracks volume, but matches per thousand names sponsored through that reseller measured against your book average. What usually follows is a tightening of verification on that channel rather than termination.

  • Extra checks on bulk orders placed in a single session.
  • A lower threshold for manual review on that channel specifically.
  • A hold on new accounts paying by a particular instrument.
  • The same ratio measured again next quarter, so you know whether any of it worked.
Does the registrant's WHOIS or RDAP record tell us anything useful here?

Less than most people hope. Contact data on names used for phishing is routinely fabricated, and the published abuse contact frequently points at a mailbox nobody reads, so any escalation route depending on it dead-ends quietly. Treating the record as an identity signal will mislead you in both directions.

Capture it anyway, for correlation: when the same fabricated pattern, the same forwarding address or the same payment instrument recurs across dozens of names on your intersection, that cluster is the actionable finding rather than any individual record. Store the record as it stood on the day, because it may well change after you act.
How do we justify the spend to a finance team?

Two arguments, and the second is the stronger. The first is analyst hours: if classification currently dominates the per-ticket cost, cutting it changes the staffing arithmetic on a desk that is almost certainly behind. The second is that you cannot currently answer the question "how many of our own names are hosting phishing today", and every party who matters — registries, accreditation bodies, enterprise customers, banks — increasingly assumes that you can.

On pricing: credits are one per lookup and stay billed monthly, priced from Growth at $99/month for 25,000 lookups through Professional at $249/month for 100,000 lookupsand up to Enterprise at $999/month for 750,000 lookups. The daily feed is a separate subscription because it is a different product shape. The pricing page lists every package and the daily feed page covers delivery.
Related reading

Where this connects to the rest of the stack

Registrars sit next to hosting, DNS and brand teams, and the same daily list is doing different work in each of those places.

Find out how many of your own names are on today's build

One sorted join against a daily list of DNS-verified phishing domains produces a number no vendor can hand you, because it is computed from your zone. Start with the API for a sample of the book, or the daily feed if you intend to run the intersection every morning.