15 serverless actors for cleaning lead data, deduplicating records, auditing email domains, and scoring prospects. Available as MCP tools, instant HTTP APIs, and batch endpoints. Free to use — no subscriptions.
All Superlative actors are available as tools via the Apify MCP Server. This lets AI agents (Claude Code, Cursor, Windsurf, and others) discover and call actors automatically.
Add to your project's .mcp.json:
{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@anthropic-ai/mcp-remote@latest", "https://mcp.apify.com/sse"],
"env": { "APIFY_TOKEN": "YOUR_API_TOKEN" }
}
}
}
Add a new MCP server in your IDE settings with the SSE endpoint:
URL: https://mcp.apify.com/sse
Token: YOUR_APIFY_TOKEN
Once connected, agents can search the Apify Store, read actor READMEs, and call actors directly as tools. All Superlative actors are discoverable by name (e.g. superlativetech/superclean-company-names).
Every actor has a warm HTTP endpoint for sub-second responses. No cold starts. Ideal for real-time agent tool calls, Clay enrichment steps, and workflow automations.
https://superlativetech--{actor-name}.apify.actor?token=TOKEN&input=VALUE
# Clean a company name
curl "https://superlativetech--superclean-company-names.apify.actor?token=TOKEN&input=ACME+CORPORATION+INC"
# {"id":1,"input":"ACME CORPORATION INC","output":"Acme","confidence":0.95}
# Validate an email
curl "https://superlativetech--superclean-emails.apify.actor?token=TOKEN&input=user@gmial.com"
# {"id":1,"input":"user@gmial.com","output":"user@gmail.com","isValid":true,"suggestedFix":"gmial.com → gmail.com"}
# Look up DNS records
curl "https://superlativetech--dns-lookup.apify.actor?token=TOKEN&domain=example.com&type=MX"
# {"domain":"example.com","records":[...]}
# Check domain health
curl "https://superlativetech--supernet-domain-health.apify.actor?token=TOKEN&domain=example.com"
# {"domain":"example.com","score":85,"band":"Good","summary":"..."}
# WHOIS lookup
curl "https://superlativetech--supernet-whois-lookup.apify.actor?token=TOKEN&domain=example.com"
# {"domain":"example.com","registrar":"...","createdDate":"...","expiryDate":"..."}
Pass an Authorization: Bearer TOKEN header instead of the token query parameter for cleaner URLs.
| Actor | Standby URL |
|---|---|
| Company Names | superlativetech--superclean-company-names.apify.actor |
| Job Titles | superlativetech--superclean-job-titles.apify.actor |
| Person Names | superlativetech--superclean-person-names.apify.actor |
| Product Names | superlativetech--superclean-product-names.apify.actor |
| Places | superlativetech--superclean-places.apify.actor |
| URLs | superlativetech--superclean-urls.apify.actor |
| Phone Numbers | superlativetech--superclean-phone-numbers.apify.actor |
| Emails | superlativetech--superclean-emails.apify.actor |
| Dedupe | superlativetech--superclean-dedupe.apify.actor |
| DNS Lookup | superlativetech--dns-lookup.apify.actor |
| Domain Health | superlativetech--supernet-domain-health.apify.actor |
| WHOIS Lookup | superlativetech--supernet-whois-lookup.apify.actor |
| HTTP API | superlativetech--http-api.apify.actor |
| OpenRouter BYOK | superlativetech--open-router.apify.actor |
| ICP Scorer | superlativetech--superlead-icp-scorer.apify.actor |
For processing hundreds or thousands of items, use the Apify Client to run actors in batch mode. Results are saved to a dataset and can be downloaded as JSON, CSV, or Excel.
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
// Clean company names
const run = await client.actor('superlativetech/superclean-company-names').call({
items: ['ACME CORPORATION, INC.', 'GOOGLE LLC', 'walmart inc'],
style: 'casual'
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
// [{ id: 1, input: 'ACME CORPORATION, INC.', output: 'Acme', confidence: 0.95 }, ...]
from apify_client import ApifyClient
import os
client = ApifyClient(token=os.environ['APIFY_TOKEN'])
# Validate emails
run = client.actor('superlativetech/superclean-emails').call(run_input={
'items': ['user@gmail.com', 'USER@GMIAL.COM', 'test@mailinator.com']
})
items = client.dataset(run['defaultDatasetId']).list_items().items
# Each item: { id, input, output, isValid, domain, hasMx, isDisposable, ... }
All Superclean actors accept flexible input:
// String array
{ "items": ["value1", "value2"] }
// Single item shorthand
{ "item": "single value" }
// Object format (for integrations)
{ "items": [{ "input": "value1" }] }
Supernet actors use domains/domain instead of items/item. ICP Scorer uses leads/lead (JSON objects).
All 14 actors with their IDs and input/output formats.
| Actor | Actor ID | Output | Type |
|---|---|---|---|
| Company Names | superlativetech/superclean-company-names |
id, input, output, confidence | LLM |
| Job Titles | superlativetech/superclean-job-titles |
id, input, output, confidence | LLM |
| Person Names | superlativetech/superclean-person-names |
id, input, output, confidence | LLM |
| Product Names | superlativetech/superclean-product-names |
id, input, output, confidence | LLM |
| Places | superlativetech/superclean-places |
id, input, output, city, stateOrProvince, country, confidence | Rule |
| URLs | superlativetech/superclean-urls |
id, input, output, domain, protocol, path, valid, confidence | Rule |
| Phone Numbers | superlativetech/superclean-phone-numbers |
id, input, output, e164, isValid, type, countryCode, confidence | Rule |
| Emails | superlativetech/superclean-emails |
id, input, output, isValid, domain, hasMx, isDisposable, isFreeProvider, suggestedFix, confidence | Rule |
| Dedupe | superlativetech/superclean-dedupe |
id, record, clusterId, clusterSize, isCanonical, duplicateOf, matchScore, matchReasons, confidence | Rule |
| Actor | Actor ID | Output | Type |
|---|---|---|---|
| DNS Lookup | superlativetech/dns-lookup |
domain, records (per type) | DNS |
| Domain Health | superlativetech/supernet-domain-health |
domain, score, band, summary, issues[], diagnostics[] | DNS |
| WHOIS Lookup | superlativetech/supernet-whois-lookup |
domain, registrar, createdDate, expiryDate, nameServers[], etc. | WHOIS |
| Actor | Actor ID | Output | Type |
|---|---|---|---|
| ICP Scorer | superlativetech/superlead-icp-scorer |
score (0-100), band, summary, confidence | LLM |
| Actor | Actor ID | Output | Type |
|---|---|---|---|
| HTTP API | superlativetech/http-api |
HTTP responses | Utility |
| OpenRouter BYOK | superlativetech/open-router |
LLM responses (model, content, usage) | LLM Proxy |
Actors compose into lead enrichment pipelines. Scrape data from any source, then chain Superlative actors to clean, enrich, and score.
// 1. Clean company names
const companies = await client.actor('superlativetech/superclean-company-names')
.call({ items: rawCompanyNames, style: 'casual' });
// 2. Validate emails
const emails = await client.actor('superlativetech/superclean-emails')
.call({ items: rawEmails });
// 3. Score against ICP
const scores = await client.actor('superlativetech/superlead-icp-scorer')
.call({ leads: enrichedLeads, icp: 'B2B SaaS, 50-500 employees, VP+ titles' });
// Full domain intelligence for a prospect list
const dns = await client.actor('superlativetech/dns-lookup')
.call({ domains: prospectDomains });
const health = await client.actor('superlativetech/supernet-domain-health')
.call({ domains: prospectDomains, mode: 'receiving', depth: 'advanced' });
const whois = await client.actor('superlativetech/supernet-whois-lookup')
.call({ domains: prospectDomains });
All actors are free to use — no per-result charges and no subscriptions. You pay only for the Apify platform compute your runs consume, which is typically negligible.
LLM-based actors (Company Names, Job Titles, Person Names, Product Names, ICP Scorer) call AI models to do their work; model token costs apply, and you can bring your own OpenRouter API key (BYOK) to pay OpenRouter directly. OpenRouter BYOK always uses your own key.