Company Data Enrichment Tool — ZoomInfo Alternative avatar

Company Data Enrichment Tool — ZoomInfo Alternative

Pricing

from $50.00 / 1,000 source-cited company enrichments

Go to Apify Store
Company Data Enrichment Tool — ZoomInfo Alternative

Company Data Enrichment Tool — ZoomInfo Alternative

Enrich company domains with source-cited public website data. Preserve CRM IDs while collecting identity, firmographic signals, published business contacts, technologies, source routes, and timestamps for account review.

Pricing

from $50.00 / 1,000 source-cited company enrichments

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Enrich company domains with source-cited public website data. Preserve CRM IDs while collecting identity, firmographic signals, published business contacts, technologies, source routes, and timestamps for account review. For account operations, each dataset row is one company website enrichment record that preserves the supplied CRM identity.

Workflow: put the results to work

Send the domains and CRM keys from an existing account list. Inspect public identity and firmographic signals with their source pages, then join accepted observations back to the original records. Keep website-derived facts distinct from inferred company attributes.

What data you receive

One result row per supplied company domain. Unavailable values remain null or [], preserving a precise review boundary.

FieldMeaning
companyName and descriptionPublic website metadata or organization-markup signal, with its source URL.
organizationType, foundedYear, address, and logoUrlValues observed in public Schema.org organization markup. They are never estimated.
industrySignalsSmall text signals observed in fetched public metadata; not a definitive classification.
publishedEmails and publishedPhonesValues visibly published on the fetched company site. No pattern generation or mailbox validation.
linkedinCompanyUrl and otherSocialUrlsLinks visibly published by the company site; those destination profiles are not fetched.
technologySignalsNamed public asset/script signatures observed in fetched HTML, not a full stack inventory.
sourceUrls, fieldSources, fetchRoutes, and collectedAtThe public pages supporting the record, whether direct or Apify Unblocker access produced it, and when evidence was collected.
collectionOutcome and warningsExplicit ENRICHED, VALID_EMPTY, INVALID_INPUT, or UPSTREAM_FAILED state.

Quick start

{
"companies": [
{ "domain": "example.com", "companyName": "Example Ltd", "externalId": "crm-001" }
],
"maxCompanies": 25,
"maxPagesPerCompany": 3,
"includePublishedContacts": true,
"includeTechnologySignals": true,
"requestTimeoutSecs": 20,
"useApifyUnblockerFallback": true,
"preferApifyUnblocker": false
}

The Actor inspects the homepage and, when requested, the fixed public /about and /contact routes. By default it uses direct HTTPS first, retries only transient failures once, and can make one Apify Unblocker attempt after a classified block or transient failure. Set preferApifyUnblocker only for a domain already known to block cloud traffic; if that preferred attempt is temporarily unavailable, the Actor makes one direct recovery attempt. Every redirect is revalidated as a public HTTP(S) destination and response HTML is size-capped. This bounded approach keeps the source set concise and reviewable.

Example output shape:

{
"externalId": "crm-001",
"inputDomain": "example.com",
"normalizedDomain": "example.com",
"companyName": "Example Ltd",
"description": "A public company description.",
"foundedYear": "2012",
"address": "123 Example Street, New York, NY",
"publishedEmails": ["hello@example.com"],
"technologySignals": ["HubSpot"],
"sourceUrls": ["https://example.com/", "https://example.com/contact"],
"fetchRoutes": ["direct"],
"collectionOutcome": "ENRICHED",
"collectedAt": "<ISO-8601 timestamp>"
}

How this bounded workflow compares with ZoomInfo

This independent Actor can replace the narrow company-website research/export step after you have selected the accounts. ZoomInfo serves buyers who want a broader sales suite with proprietary company/contact data, buyer-intent and visitor signals, CRM integrations, team workflows, verification operations, and outreach features.

DecisionThis ActorZoomInfoBest fit
Starting pointA caller-supplied company domainBroad sales-intelligence suiteUse this Actor when your account list already exists.
SourcesPublic pages fetched from the company’s own websiteBroader product data and signalsUse this Actor when page-level provenance matters.
Output contractStructured fields, source URLs, timestamps, explicit nulls, and warningsBroader product functionalityUse ZoomInfo for suite-level data and workflows.
Effective efficiencyOne bounded, reviewable record per supplied domain with field-level provenanceThe broader suite supports a wider product workflowCompare usable records and active operator time for the same selected-domain job.
Integration contextAPI and dataset readback are part of the planned private release checkProduct integrations depend on the selected ZoomInfo planSelect the route whose verified integration matches your workflow.
Billing contextPay per event plus platform usage; see the Pricing tab for current rates.Same-job pricing requires current plan termsCompare only the same records, volume, and current plan terms.

ZoomInfo is a trademark of its owner. This independent Actor is not affiliated with, associated with, or endorsed by ZoomInfo.

When not to use this Actor

Do not use this Actor when the job starts with a person name, job title, market segment, private contact request, buyer-intent query, or outreach campaign instead of a known company domain. Those jobs are outside this Actor’s contract. Use it when the selected account list and authorized public-website research boundary are already clear.

API usage

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('khadinakbar/zoominfo-alternative').call({
companies: [{ domain: 'example.com', externalId: 'crm-001' }],
maxCompanies: 1
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

AI-agent prompt

Enrich these caller-selected company domains from their own public websites. Return the terminal run outcome, every dataset row, source URLs, field sources, collection time, and warnings. Keep an empty public contact field empty and preserve its explicit result state.

An agent should read OUTPUT and RUN_SUMMARY after the dataset, preserve externalId as its join key, and branch on COMPLETE, PARTIAL, VALID_EMPTY, INVALID_INPUT, UPSTREAM_FAILED, or CONFIG_ERROR. It should retain warnings instead of treating an empty contact field as a failure. Apify MCP setup is available at mcp.apify.com; client-specific compatibility requires a separate verified invocation.

Limitations and troubleshooting

  • A domain can publish little structured metadata even when its pages are reachable; review VALID_EMPTY, empty fields, and sourceUrls rather than inferring missing data.
  • A temporary site block, timeout, DNS failure, or unavailable /about route appears in warnings. The Actor retries transient direct failures once and, when enabled, makes one Apify Unblocker recovery attempt.
  • If platform usage is the priority, disable useApifyUnblockerFallback. If a domain is already known to block cloud traffic, keep fallback enabled and set preferApifyUnblocker; inspect fetchRoutes plus RUN_SUMMARY.routes either way.
  • Login-only pages, arbitrary crawling, browser-rendered content, private profiles, email guessing, contact verification, and outreach are outside this bounded workflow.

Provenance and freshness

Every completed record carries sourceUrls, per-field sources, transport route, and collectedAt. Release evidence for the exact private build is maintained separately from public marketing copy and includes cloud datasets, terminal records, and charge reconciliation. Website observations are point-in-time evidence, so use collectedAt and rerun when freshness matters.

Best results

  • Supply canonical company domains as the strongest starting input for website evidence.
  • Keep maxPagesPerCompany at the default three pages to preserve a clear source boundary.
  • Keep Apify Unblocker enabled when reachability matters; turn it off when minimizing platform usage is more important than recovering blocked pages.
  • Use fieldSources and collectedAt when reviewing a CRM update or a stale field.
  • Treat published contacts as public website observations within your authorized review process.

Builder's note

I built this Actor around provenance over volume. Every website-derived result names the public pages that support it, and an unavailable field stays explicit. My goal is to make the output easy to review and refresh as a website-evidence record.

Responsible use

Use company data you are authorized to process. Respect applicable privacy laws, website terms, opt-outs, and your organization’s communication policy. This Actor collects a bounded set of public company pages for research and review.

Pricing and run costs

This Actor uses Pay per event plus Apify platform usage. The Pricing tab lists the current event rates and billing terms.

EventBilling unitWhen it applies
apify-actor-startActor StartCharged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).
company-enrichedSource-cited company enrichmentCharged after one supplied company domain has at least one public page fetched and one complete, schema-valid result record persisted. Invalid inputs and fully unavailable website routes are not charged.

Run cost combines the charged events and Apify platform usage. Review the run charge limit and requested result count before starting.