# B2B Account Research Tool — Cognism Alternative (`khadinakbar/cognism-alternative`) Actor

Research known B2B company domains using public company pages. Collect account context, published business emails, role-keyword evidence, LinkedIn company links, and source URLs for account-review workflows.

- **URL**: https://apify.com/khadinakbar/cognism-alternative.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** Lead generation, Automation, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $120.00 / 1,000 public account researcheds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## B2B Account Research Tool — Cognism Alternative

Research known B2B company domains using public company pages. Collect account context, published business emails, role-keyword evidence, LinkedIn company links, and source URLs for account-review workflows. For account researchers, each dataset record represents one known company domain and the public-page evidence gathered for it.

### Workflow: put the results to work

Upload the domains from your target-account list and retain your account IDs. Add role keywords only when literal mentions on company pages matter. Review the cited pages before joining the public evidence back to your CRM or moving to a separate contact-enrichment step.

### Best fit for this Actor

Use this Actor when you already have a target-account list and need a reviewable public-web record before a permitted enrichment, CRM, or outreach decision. It is read-only: it fetches only a fixed set of public company-owned pages and never sends messages, writes to a CRM, guesses email addresses, or looks up hidden contact data.

Start with a public company domain such as `example.com`. Use an optional account label and your own record ID to join the result back to an approved workflow. Add a few role keywords only when literal mentions on company pages are useful context.

This is not a replacement for a licensed B2B contact database, verified mobile data, buying-intent data, phone verification, person discovery, CRM synchronization, campaigning, or compliance operations. Those broader requirements need an appropriately licensed provider and the relevant internal controls.

### How this public-account workflow compares with Cognism

This Actor is a focused alternative for the public account-research step: it turns known company domains into source-cited public evidence. Cognism remains the broader choice for its licensed contact database, verified mobile coverage, intent data, CRM workflows, sales workspace, and its operational compliance program.

| Decision                                  | This Actor                                                                                                                                    | Cognism                                                                                                               | Best fit                                                                                                     |
| ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| Scope                                     | Bounded public company-page research for known accounts                                                                                       | Broader sales-intelligence platform                                                                                   | Choose this Actor for a source-review step; choose Cognism for suite-level sales intelligence.               |
| Starting point                            | A known company domain and optional account context                                                                                           | Product and workspace configuration vary by plan                                                                      | Choose this Actor when a public domain is already available.                                                 |
| Output                                    | Source URLs, timestamps, public account context, visibly published business-email evidence, and outcomes                                      | Broader company/contact data is outside this Actor's scope                                                            | Choose the output that matches the downstream review requirement.                                            |
| Automation                                | Structured Apify run input and dataset readback; no CRM write or outreach action                                                              | Broader workflows are outside this Actor's scope                                                                      | Keep a human-approved action step separate from data collection.                                             |
| Provenance                                | Every useful record retains fetched public source URLs and a collection time                                                                  | This Actor does not assert Cognism-equivalent data provenance                                                         | Choose this Actor when per-record public-source review matters.                                              |
| Licensed contacts and mobile verification | Not provided                                                                                                                                  | Available through Cognism products and selected packages                                                              | Choose Cognism when those capabilities are required.                                                         |
| Billing and same-job cost                 | Pay per validated public-account result plus Apify platform usage; the input cap makes the maximum result-event exposure visible at run start | Cognism pricing and contract scope are tailored; this Actor does not estimate a Cognism same-job price                | Use the live pricing pages and your contract terms to compare one approved account-research job.             |
| Effective efficiency                      | A short fixed page set avoids broad crawling and returns only evidence needed for a known-account review                                      | Suite-level workflows may be more efficient when their licensed data, CRM workflow, and broader coverage are required | Use this Actor for a bounded source-review step; use a licensed contact database for broad contact coverage. |

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

### From known domains to a reviewable account record

A revenue-operations analyst receives a list of target accounts from an approved planning process. They send the company domains to this Actor, retain their own `externalId`, and ask for two role phrases that matter to the account plan. The Actor checks the homepage, contact, and about pages by default, then returns exactly which pages supplied the public business-email evidence and role mentions. A reviewer can inspect the sources before deciding whether a separate, permitted enrichment or CRM process is appropriate.

### What one result contains

One dataset item represents one supplied company domain. It is never a claimed person profile or a verified contact record.

| Field                                                    | Meaning                                                                                                                          |
| -------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `companyDomain`                                          | Normalized public hostname used for the bounded page pass.                                                                       |
| `accountName`, `externalId`                              | Caller-supplied values returned unchanged for joins.                                                                             |
| `companyNameDetected`, `companyDescription`              | Public page metadata when the source exposes it; not legal-entity verification.                                                  |
| `businessEmails`, `businessEmailEvidence`                | Values visibly published on fetched pages with the supporting source URLs. No guessing, verification, or individual attribution. |
| `targetRoleKeywords`, `roleKeywordEvidence`              | Caller phrases with source pages where a literal phrase appeared. This is not people discovery or title verification.            |
| `companyLinkedInUrls`                                    | Public LinkedIn company links visibly linked by the source page; the Actor does not fetch or enrich them.                        |
| `sourceUrls`, `pageTitles`, `fetchRoutes`, `collectedAt` | Provenance, source context, route, and observation time.                                                                         |
| `collectionOutcome`, `warnings`                          | A truthful result state and safe diagnostics.                                                                                    |

```json
{
    "externalId": "crm-account-001",
    "accountName": "Example Organization",
    "companyDomain": "example.com",
    "companyNameDetected": "Example Organization",
    "companyDescription": "Example organization homepage.",
    "targetRoleKeywords": ["Founder"],
    "roleKeywordEvidence": [{ "keyword": "Founder", "sourceUrls": ["https://example.com/about"] }],
    "businessEmails": ["info@example.com"],
    "businessEmailEvidence": [{ "value": "info@example.com", "sourceUrls": ["https://example.com/contact"] }],
    "companyLinkedInUrls": [],
    "sourceUrls": ["https://example.com/", "https://example.com/contact"],
    "pageTitles": ["Example Organization", "Contact us"],
    "fetchRoutes": ["direct"],
    "pagesRequested": 3,
    "pagesFetched": 2,
    "collectionMethod": "public-company-pages",
    "collectionOutcome": "PUBLIC_BUSINESS_EMAIL_FOUND",
    "warnings": [],
    "collectedAt": "2026-09-07T12:00:00.000Z"
}
```

The example shows the contract shape. Actual public sources may contain no business email or role-keyword match; a functioning source pass then returns `PUBLIC_ACCOUNT_EVIDENCE_ONLY` rather than inventing a value. When every required public source route is unavailable, the record and run summary expose `SOURCE_UNAVAILABLE`.

### Quick start and input

Use company domains you are authorized to research. The input below is bounded to one public account and one source page for a low-cost first run.

```json
{
    "accounts": [
        {
            "companyDomain": "apache.org",
            "accountName": "Apache Software Foundation",
            "externalId": "account-001",
            "targetRoleKeywords": ["Foundation", "Project"]
        }
    ],
    "maxAccounts": 1,
    "maxPagesPerAccount": 1,
    "requestTimeoutSecs": 15,
    "useApifyUnblockerFallback": false,
    "preferApifyUnblocker": false
}
```

The Actor validates targets before fetching: it rejects private, local, IP-address, credentialed, non-HTTP(S), and non-standard-port URLs. Candidate pages are bounded to the homepage, `/contact`, `/about`, `/team`, and `/leadership`; it does not crawl arbitrary links.

#### Run through the Apify API

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('khadinakbar/cognism-alternative').call({
    accounts: [
        {
            companyDomain: 'apache.org',
            accountName: 'Apache Software Foundation',
            externalId: 'account-001',
            targetRoleKeywords: ['Foundation'],
        },
    ],
    maxAccounts: 1,
    maxPagesPerAccount: 1,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### Use with an AI agent through Apify MCP

Use this prompt when a known account list needs evidence, not hidden-person data:

> Research these known company domains from their public company pages. Return one record per company with publicly visible business-email evidence, source URLs, collection time, and any literal mentions of the requested role keywords. Keep email values as observed public evidence, leave phone fields out, stop at five companies, and describe partial or unavailable sources.

The Actor is read-only. A hosted Apify MCP call returns a preview and the dataset ID; use dataset pagination or a smaller account list when more records are needed. Invalid domains return an actionable `INVALID_INPUT` result; a functioning public-page pass with no visible email remains a valid account-evidence result.

### Best-results guidance

| Starting situation                                        | Helpful action                                           | Expected outcome                                                                |
| --------------------------------------------------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------- |
| You already have target accounts                          | Provide canonical public company domains                 | Source-cited account context and visible business-email evidence when published |
| You need context for one account                          | Set `maxAccounts` and `maxPagesPerAccount` to 1          | A fast, reviewable first-run record                                             |
| A permitted public site repeatedly blocks direct requests | Enable the optional Unblocker fallback for a small trial | A named recovery route and clear diagnostics if the source remains unavailable  |
| You need verified contacts, mobiles, or buying signals    | Use a separately licensed data provider                  | A workflow designed for that broader data boundary                              |

### Limits, reliability, and troubleshooting

- The Actor collects only from public company-owned pages reached through the fixed candidate path. It does not query private pages, personal profiles, or proprietary lead databases.
- `businessEmails` are only visibly published values. They are not verified, guessed, deduplicated across companies, or attributed to a specific person.
- Role phrases are simple literal text matches on a source page. They are not role classification, employment verification, or an identity claim.
- Valid empty evidence, invalid input, partial collection, and unavailable sources are surfaced in the dataset, `OUTPUT`, and `RUN_SUMMARY` so downstream workflows can branch without treating missing data as success.
- Apify Unblocker is an optional recovery route, not a promise to access restricted or authenticated material. Keep it off unless a permitted public target needs it.

### Builder's note

I designed this Actor so account context remains a traceable public-web observation. Each useful observation keeps a source URL and collection time; when a page exposes no business email, the Actor retains the account evidence and describes that state plainly. That makes a small public research step easier to review and safer to compose with a later approved workflow.

### Legal and responsible use

Use only public company pages and data you are authorized to process. You are responsible for applicable law, site terms, privacy obligations, suppression requirements, and any downstream use. The Actor does not establish a lawful basis for collection, make compliance claims, or authorize outreach. Private-individual targeting, access-control bypassing, and personal-contact inference remain outside this workflow.

### Feedback

If a public source changes shape or a legitimate account page returns an unexpected outcome, include the non-secret input shape, source URL, collection outcome, and run ID in the issue report so the workflow can be investigated safely.

### Pricing and run costs

This Actor uses **Pay per event plus Apify platform usage**. The [Pricing tab](https://apify.com/khadinakbar/cognism-alternative/pricing) lists the current event rates and billing terms.

| Event | Billing unit | When it applies |
|---|---|---|
| `apify-actor-start` | Actor Start | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). |
| `public-account-researched` | Public account researched | Charged once for each validated account record built from at least one successfully fetched public company page. |

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

### Connect an AI agent

Use the [Apify MCP configurator](https://mcp.apify.com) to choose an available client connection. Inspect this Actor’s current input schema and required credentials before running it.

# Actor input Schema

## `accounts` (type: `array`):

Provide one to 20 known B2B company records to research from their public website. Each item needs companyDomain such as example.com and can retain a caller label, record ID, and up to five role keywords. The default is one stable public example and maxAccounts applies after validation. This is not a company-name search, contact-database lookup, or permission to submit private network targets.

## `maxAccounts` (type: `integer`):

Safety cap for valid account records after normalization and duplicate removal. Enter an integer such as 5; values range from 1 to 20. The default 5 keeps first runs bounded. This is not the number of pages or an instruction to discover additional companies.

## `maxPagesPerAccount` (type: `integer`):

Bound the fixed public-page set checked for each account: homepage, contact, about, team, then leadership. Enter 1 through 5; the default is 3 pages. Lower values reduce runtime and event-charge exposure. This is not a site-wide crawl depth or a request to follow arbitrary links.

## `requestTimeoutSecs` (type: `integer`):

Maximum time allowed for one public-page HTTP request before it is classified for retry or a truthful source outcome. Enter seconds such as 15; supported values are 5 through 30. The default balances first-run reliability and bounded compute. This is not the total Actor timeout or an unlimited retry setting.

## `useApifyUnblockerFallback` (type: `boolean`):

Enable one Apify Unblocker recovery attempt only when a direct public-page request is blocked or transiently unavailable. The default is false, preserving direct collection as the primary route. Apify proxy usage may add platform charges when this option runs. This is not a guarantee of access or a bypass for authenticated or restricted pages.

## `preferApifyUnblocker` (type: `boolean`):

Start with Apify Unblocker when a permitted public website has repeatedly blocked direct requests. It only applies when the fallback option is also enabled, and defaults to false. Direct collection remains the standard lower-cost route. This is not required for ordinary public sites or a substitute for collection authority.

## Actor input object example

```json
{
  "accounts": [
    {
      "companyDomain": "apache.org",
      "accountName": "Apache Software Foundation",
      "externalId": "account-001",
      "targetRoleKeywords": [
        "Foundation",
        "Project"
      ]
    }
  ],
  "maxAccounts": 5,
  "maxPagesPerAccount": 3,
  "requestTimeoutSecs": 15,
  "useApifyUnblockerFallback": false,
  "preferApifyUnblocker": false
}
```

# Actor output Schema

## `accounts` (type: `string`):

Structured public account context, visible business-email evidence, source URLs, collection outcomes, and timestamps.

## `output` (type: `string`):

Compact terminal outcome, counts, billable-event summary, routes, and warnings.

## `runSummary` (type: `string`):

Detailed safe diagnostics, source-route attempts, outcomes, and charge counts.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "accounts": [
        {
            "companyDomain": "apache.org",
            "accountName": "Apache Software Foundation",
            "externalId": "account-001",
            "targetRoleKeywords": [
                "Foundation",
                "Project"
            ]
        }
    ],
    "maxAccounts": 5,
    "maxPagesPerAccount": 3,
    "requestTimeoutSecs": 15,
    "useApifyUnblockerFallback": false,
    "preferApifyUnblocker": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/cognism-alternative").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "accounts": [{
            "companyDomain": "apache.org",
            "accountName": "Apache Software Foundation",
            "externalId": "account-001",
            "targetRoleKeywords": [
                "Foundation",
                "Project",
            ],
        }],
    "maxAccounts": 5,
    "maxPagesPerAccount": 3,
    "requestTimeoutSecs": 15,
    "useApifyUnblockerFallback": False,
    "preferApifyUnblocker": False,
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/cognism-alternative").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "accounts": [
    {
      "companyDomain": "apache.org",
      "accountName": "Apache Software Foundation",
      "externalId": "account-001",
      "targetRoleKeywords": [
        "Foundation",
        "Project"
      ]
    }
  ],
  "maxAccounts": 5,
  "maxPagesPerAccount": 3,
  "requestTimeoutSecs": 15,
  "useApifyUnblockerFallback": false,
  "preferApifyUnblocker": false
}' |
apify call khadinakbar/cognism-alternative --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,khadinakbar/cognism-alternative"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/3vN9tAAV1lCR8vorN/builds/Vc5z4TKfdGs0uQtAX/openapi.json
