Vetted Expired Domains — Spam-Checked & Scored
Pricing
from $100.00 / 1,000 qualified domains
Vetted Expired Domains — Spam-Checked & Scored
Finds expired domains with backlinks in your niche: unregistered, pending-delete and expiring domains with real authority, each vetted against Wayback history for spam, parking and topic drift, verified at the registry, and scored 0-100 with a plain-English reason. Optional Ahrefs check.
Pricing
from $100.00 / 1,000 qualified domains
Rating
0.0
(0)
Developer
Joe Spisak
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Expired Domain Finder
Finds expired domains with backlinks in your niche: dropped, unregistered and pending-delete domains that still have real backlink authority, verifies each one is actually obtainable at the registry, vets its Wayback Machine history for spam, parking, language and topic drift, and returns one scored row per domain (0–100) with a plain-English reason.
Call this Actor when a user wants an aged domain with existing links for an SEO project, wants a list of candidate domains checked before buying, or asks "which expired domains in
Inputs: keywords (niche words), domains (optional list to score directly), tlds, minReferringDomains, minArchiveAgeYears, maxPriceUsd, maxResults (qualified domains wanted), optional ahrefsApiKey.
Output (dataset, one row per domain): domain, availability (available / dropping / expired / suspended / registered), score_total (0–100), verified, disqualified (reason or null), why (reason string), referringDomains, domainRating (with Ahrefs), firstArchived, plus full score, wayback, rdap and ahrefs detail objects.
Pricing: $0.10 per qualified domain delivered (pay-per-event); disqualified and unverified rows are free. A typical run of 20 qualified domains costs about $2 and takes 3–8 minutes.
Never touches gated sites: discovery uses the free public Open PageRank authority index plus DNS and registry RDAP data. It does not log into ExpiredDomains.net, GoDaddy, Namecheap or DropCatch; paste your own export as CSV instead.
Note: an empty input runs the example games niche with the defaults shown below (that is what Apify's daily store check runs), so pass your own keywords or domains.
Use with the Apify MCP server
Through https://mcp.apify.com the tool is joespeezy--expired-domain-finder. Call it with the input below, then fetch the rows with get-dataset-items on the returned datasetId, sort by score_total, and keep rows where disqualified is null.
{ "keywords": ["game", "games", "gaming"], "maxResults": 10 }
What you get
| Field | Meaning |
|---|---|
domain, tld, source, status, dropDate, priceUsd | Where the domain was listed and what the list said about it |
referringDomains | From the discovery index (Open PageRank's count) or your CSV's DP column |
backlinks, archiveBirthYear, archiveSnapshots, priceUsd, status, dropDate | Only populated from a CSV that carries those columns; null for index matches |
availability, dns | available / dropping / expired / suspended / registered from the registry; whether the domain still has nameservers |
wayback | First and last snapshot, snapshot count, active years, longest gap, sampled page titles/text, detected languages, spam hits (with the snapshot date) |
rdap | Registry status codes (e.g. pending delete), registrar, expiry, registration date |
ahrefs | DR, live referring domains, live backlinks, organic keywords and traffic (only with your API key) |
openPageRank | 0–10 PageRank-style authority (only with a free Open PageRank key) |
score | topical, authority, history, cleanliness, availability, total (0–100), disqualified, verified, why |
score_total, verified, disqualified, why, domainRating, firstArchived | Flat copies of the values above for table views and spreadsheets |
What a run looks like


How the score works
| Component | Max | Rule |
|---|---|---|
| Topical | 30 | 20 if a keyword appears in the domain name; up to 10 more for the share of archived pages whose title/text mention a keyword |
| Authority | 30 | Referring domains on a log scale (5 → 5 pts, 20 → 12, 50 → 18, 100 → 22, 500 → 28, 1000+ → 30), averaged with Ahrefs DR/100×30 and Open PageRank/10×30 when present |
| History | 20 | Age of the first Wayback snapshot (1 y → 4, 3 y → 10, 5 y → 14, 10 y+ → 20); −4 for an archive gap longer than 24 months |
| Cleanliness | 15 | Starts at 15; −8 per spam category found in sampled snapshots (casino, pharma, adult, payday loans, replicas, PBN/SEO spam, parking, crypto giveaways); −5 for language drift or a non-English site; −3 if the topic drifted away before the drop |
| Availability | 5 | 5 unregistered or dropping (hand-register or drop-catch), 4 expired at the registrar (watch/backorder), 3 marketplace listing within budget, 1 unknown, 0 suspended |
Disqualifiers (total forced to 0, reason in score.disqualified, row delivered free): any spam signal in the archived history (casino, pharma, adult, payday, replicas, PBN, parking pages or registrar redirect stubs, crypto giveaways, fake-endorsement trading-robot funnels) — even an old, outgrown one, so you can judge it yourself; a gambling, adult, play-to-earn or trading-scam token in the domain name (casino, slot, bet, 777, xxx, bitcoin-trader…); first snapshot younger than minArchiveAgeYears or no archive history; a link-network signature (1,000+ referring domains that never produced a single organic ranking) or a thin history for its links (hundreds of referring domains but only a few archived months of life); marketplace price above maxPriceUsd; measured referring domains below minReferringDomains (Ahrefs count wins); anything you cannot obtain — registered and live, on registrar hold, or availability the registry could not confirm — whether it came from the index or your own list; an archive check that failed (score.verified: false).
Never charged twice: a domain you were charged for in any earlier run is remembered in your account (key-value store expired-domain-finder-charged) and comes back free in later runs, so daily prospecting only pays for new finds.
You are only ever charged for a row that is obtainable (available, dropping, expired at the registrar, or a priced listing), verified, and free of every disqualifier above. Registered domains in your own list are still scored, for information, at no charge.
Unknown is not zero, and unknown is not clean: a missing referring-domain count never disqualifies, but an archive history that could not be read never earns cleanliness points and the row ships flagged instead of "clean".
Input
| Field | Default | Notes |
|---|---|---|
keywords | — | Domain name must contain one of these. The Actor scans the free Open PageRank top-10-million authority index for matches, then keeps only the ones that are unregistered, in pending delete, or expired. Example for a games site: game, games, gaming, arcade, puzzle |
domains | — | Skip the sources and score these domains directly (check a list you already have). Registered domains are scored for information but never charged; maxResults still caps how many qualified domains are delivered |
tlds | com, net, org, io | |
minReferringDomains | 10 | Applied to the index's referring-domain column (conservative: Ahrefs reports a median ~15× more for the same domain, measured on 30 domains 2026-09-10), then re-checked against Ahrefs when a key is given |
minArchiveAgeYears | 3 | First Wayback snapshot at least this old |
maxPriceUsd | 200 | Marketplace listings above this are disqualified |
maxCandidates / maxResults | 4000 / 10 | How many index matches (highest-ranked first) get the DNS + registry check, and how many qualified domains you want. You pay only for qualified domains (verified, not disqualified); disqualified and unverified rows are delivered free so you can see what was rejected and why. At most 8× maxResults candidates are scored per run |
csvText / csvUrl | — | A CSV you exported yourself (any expired-domain marketplace member export, an Ahrefs export, an auction sheet). Needs a domain column; BL/DP/ABY/ACR/price/status/end-date columns are picked up when present |
includeRegistered | false | Also score index matches that are still registered and live |
ahrefsApiKey | — | Optional. Ahrefs API v3, ~160 API units per scored domain (measured 2026-09-10) |
openPageRankApiKey | — | Optional, free at openpagerank.com |
Worked example — a games-discovery site
Goal: an aged, clean domain with a games history to host a "new games worth trying" site.
{"keywords": ["game", "games", "gaming", "arcade", "puzzle"],"tlds": ["com", "net", "org", "io"],"minReferringDomains": 20,"minArchiveAgeYears": 5,"maxCandidates": 5000,"maxResults": 50,"ahrefsApiKey": "…"}
Real rows from a games-niche run on 2026-09-10 (Ahrefs on). Every domain below was unregistered or in pending delete at the registry when scored; availability changes daily, so always re-run before buying.
| domain | availability | score | why |
|---|---|---|---|
| mutilateadoll2game.com | dropping (pending delete) | 83 | name matches "game"; 4/4 archived pages on-topic; 503 referring domains, DR 10; archived since 2016 |
| galileogames.com | dropping (pending delete) | 81 | name matches "game"; 637 referring domains, DR 35; archived since 1996 (209 archived months) |
| 4arcades.com | available (hand-register now) | 73 | name matches "arcade"; 498 referring domains, DR 9; archived since 2014 |
| swordsandsoulsgame.com | available (hand-register now) | 73 | name matches "game"; 553 referring domains, DR 4.7; archived since 2015 |
| astronaut-crashgame777.com | dropping | 0 | DISQUALIFIED: gambling token in the domain name; recent spam history (casino/gambling); archive age 1y < minimum 3y — despite 5,493 referring domains |
| gamepgslot.net | available | 0 | DISQUALIFIED: gambling token in the domain name; recent spam history (casino/gambling) |
| complexitygaming.com | suspended (registrar hold) | 0 | DISQUALIFIED: registered but on hold — not obtainable, even though DR 52 and archived since 2006 |
To check a list you already have (an auction shortlist, a broker's sheet), pass it as domains; those rows are scored whether registered or not, and availability tells you which is which.
How it behaves toward the sources
- Discovery uses the free, public Open PageRank top-10-million list (one anonymous CSV download per run, cached for a week) plus DNS and registry RDAP. The Actor never logs into ExpiredDomains.net, GoDaddy, Namecheap, DropCatch or any gated marketplace — those sites forbid automated access, and nothing here puts your accounts at risk. If you want their data, export it by hand and paste it as CSV.
- Wayback Machine CDX API and raw snapshots: 3 concurrent, ≥1 s between request starts, exponential backoff on 429/503 honouring
Retry-After.wayback.snapshotscounts distinct months with a 200 HTML capture, not raw captures. If the archive still cannot be read, the row is pushed asdisqualified: unverified…,score.verified: false, and is not charged — rerun those domains viadomains. - RDAP straight to each registry from the IANA bootstrap (Identity Digital for .io): 4 concurrent, ≥0.25 s apart.
available= the registry has no record;dropping= pendingDelete/redemptionPeriod;expired= past expiry or auto-renew grace;suspended= registrar/registry hold (registered, not obtainable — disqualified for index matches). - Ahrefs and Open PageRank only with your keys, on your quota; metrics stay in your run's dataset, never cached across users.
- Resumable: state is checkpointed to the run's key-value store every 10 domains and on migration; a resumed run does not re-pull lists or re-score domains already pushed.
Local development
npm installcp .env.example .env # fill in what you havenpm test # unit testsapify run --purge # uses storage/key_value_stores/default/INPUT.json
Pinned references (verified 2026-09-10)
- Wayback CDX server API — https://github.com/internetarchive/wayback/tree/master/wayback-cdx-server
- RDAP bootstrap — https://rdap.org/ (RFC 9083 responses;
pending delete/redemption periodstatus codes) - Ahrefs metrics (DR, referring domains, organic keywords) are provided by Ahrefs through your own API key and stay in your run — Ahrefs API v3 site-explorer endpoints — https://docs.ahrefs.com/docs/api/reference/introduction (
mode=subdomainsfor whole-host counts) - Open PageRank API — https://www.domcop.com/openpagerank/documentation
- Open PageRank top-10M list — https://openpagerank.keywordseverywhere.com/top-10-million-domains (anonymous CSV, ~monthly)
- IANA RDAP bootstrap — https://data.iana.org/rdap/dns.json
- Apify: Actor definition, input schema, pay-per-event — see
docs/apify-notes.md