{
  "data": {
    "id": "6VFOi70fBOSPu4WYI",
    "actId": "bcoWkzaZvBMTucbl8",
    "userId": "PQYhLf2Ku6YqyCWbx",
    "startedAt": "2026-10-04T16:13:27.616Z",
    "finishedAt": "2026-10-04T16:13:43.644Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "API"
    },
    "stats": {
      "durationMillis": 15976,
      "runTimeSecs": 15.976,
      "computeUnits": 0.01775111111111111,
      "imageSizeBytes": 326255616
    },
    "options": {
      "useCache": false,
      "betaPackages": false,
      "tag": "latest",
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Person Business Email Finder Input\",\n  \"description\": \"An email finder for one job: find email by name and company domain — you know who to reach, it returns their most likely business address.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"people\": {\n      \"title\": \"People (name + company domain)\",\n      \"type\": \"array\",\n      \"description\": \"People to look up — the email finder needs a name and company domain for each (find email by name). People to find business emails for. Each item is {\\\"fullName\\\": ..., \\\"company\\\": ...} where company can be a website domain (stripe.com), a company name (Stripe, Acme Inc) or a LinkedIn company URL — names and URLs are resolved to the company's mail domain automatically. Also accepts 'Full Name, Company' lines.\",\n      \"editor\": \"json\",\n      \"prefill\": [\n        {\n          \"fullName\": \"Patrick Collison\",\n          \"company\": \"Stripe\"\n        },\n        {\n          \"fullName\": \"Brian Chesky\",\n          \"companyDomain\": \"airbnb.com\"\n        }\n      ],\n      \"example\": [\n        {\n          \"fullName\": \"Patrick Collison\",\n          \"companyDomain\": \"stripe.com\"\n        }\n      ]\n    },\n    \"verify\": {\n      \"title\": \"MX-verify domains\",\n      \"type\": \"boolean\",\n      \"description\": \"When enabled (default), each company domain is checked for valid DNS MX records and the email provider (Google Workspace, Microsoft 365, etc.) is detected. Disable to skip DNS lookups and return pattern candidates only.\",\n      \"default\": true,\n      \"prefill\": true,\n      \"editor\": \"checkbox\"\n    },\n    \"notionConnector\": {\n      \"title\": \"Deliver to Notion (optional)\",\n      \"type\": \"string\",\n      \"description\": \"Optional. Connect your Notion workspace and the resolved business emails are also written as a Notion page in the same run — the Actor never sees your Notion credentials. Authorize a Notion MCP connector in Apify Console → Settings → API & Integrations, then select it here.\",\n      \"resourceType\": \"mcpConnector\",\n      \"mcpServers\": [\n        {\n          \"url\": \"https://mcp.notion.com/*\",\n          \"tools\": {\n            \"required\": [\n              \"*create*page*\"\n            ]\n          }\n        }\n      ],\n      \"editor\": \"resourcePicker\",\n      \"nullable\": true,\n      \"sectionCaption\": \"Deliver to Notion (MCP connector)\",\n      \"sectionDescription\": \"Optional agentic delivery. Leave blank to just get the dataset as usual.\"\n    },\n    \"notionParentId\": {\n      \"title\": \"Notion parent page ID (optional)\",\n      \"type\": \"string\",\n      \"description\": \"Optional. The Notion page ID to create the page under. If blank, Notion creates a private page in your workspace.\",\n      \"editor\": \"textfield\",\n      \"nullable\": true\n    },\n    \"supabaseConnector\": {\n      \"title\": \"Deliver to Supabase (optional)\",\n      \"type\": \"string\",\n      \"description\": \"Optional. Connect your own Supabase project and the results are also inserted into a table in the same run — the Actor never sees your Supabase credentials. Authorize a write-scoped, project-scoped Supabase MCP connector in Apify Console (Settings -> Integrations), then select it here.\",\n      \"resourceType\": \"mcpConnector\",\n      \"mcpServers\": [\n        {\n          \"url\": \"https://mcp.supabase.com/*\",\n          \"tools\": {\n            \"required\": [\n              \"execute_sql\"\n            ]\n          }\n        }\n      ],\n      \"editor\": \"resourcePicker\",\n      \"nullable\": true,\n      \"sectionCaption\": \"Deliver to Supabase (MCP connector)\",\n      \"sectionDescription\": \"Optional. Inserts each record as a JSONB row into a table in your Supabase project (created if missing). Leave blank to just get the dataset.\"\n    },\n    \"supabaseTable\": {\n      \"title\": \"Supabase table name (optional)\",\n      \"type\": \"string\",\n      \"description\": \"Target table in the public schema (created if missing, with id, a jsonb data column, and a scraped_at timestamp). Default: nexgendata_leads.\",\n      \"editor\": \"textfield\",\n      \"nullable\": true,\n      \"default\": \"nexgendata_leads\"\n    },\n    \"supabaseProjectId\": {\n      \"title\": \"Supabase project ID (optional)\",\n      \"type\": \"string\",\n      \"description\": \"Your Supabase project reference (e.g. abcdefghijklmnop). Required unless your connector URL is already project-scoped. Find it in your project URL: supabase.com/dashboard/project/THIS_PART.\",\n      \"editor\": \"textfield\",\n      \"nullable\": true\n    },\n    \"deliveryDedup\": {\n      \"title\": \"Deduplicate deliveries across runs\",\n      \"type\": \"boolean\",\n      \"description\": \"When on (default), records already delivered in a previous run are not delivered again to the same destination — so scheduled runs only push new items. Turn off to deliver every record on every run.\",\n      \"default\": true\n    }\n  },\n  \"required\": [\n    \"people\"\n  ]\n}",
    "readme": "# Email Finder — Find Email by Name and Company Domain\n\nAn **email finder** for one job: **find email by name** and company domain — you know who to reach, it returns their most likely business address.\n\nGive it a name and a company domain, get back the most likely **public business email** — inferred from the standard address patterns companies use, with the company domain checked for DNS MX records. You pay only for a person we resolve.\n\n> Output is a prospect list for your sales team, assembled from public web and business sources. Use it in line with applicable outreach and privacy law.\n\n#> **Company names and LinkedIn company URLs are accepted** — `\"company\": \"Stripe\"` or a `linkedin.com/company/...` URL is resolved to the company's mail domain before the lookup (since 0.0.21). A name that cannot be resolved is skipped and not charged.\n\n<!-- ngd:generated -->\n<!-- generated 2026-09-25 from the live input schema, pricing and a real run on the current build; regenerated on every README ship -->\n\n## 📊 Sample Output\n\n![2 real rows delivered by Person Email Finder — Name + Company to Verified Email API — run xcOSMlTDGTswbpZXe on build 0.0.22](https://api.apify.com/v2/key-value-stores/8gLgXMBveEI1tTz1z/records/person-business-email-finder-sample)\n\n| `full_name` | `company_domain` | `company_input` | `domain_resolved_from` | `best_email` | `email_provider` |\n|---|---|---|---|---|---|\n| Patrick Collison | stripe.com | Stripe | company-name lookup | [email on record] | Google Workspace |\n| Brian Chesky | airbnb.com | airbnb.com | input | [email on record] | Google Workspace |\n\nReal rows from run `xcOSMlTDGTswbpZXe` on build 0.0.22 (2026-09-24), unedited apart from masked emails/phones and shortened long text; fields the source does not publish are empty.\n\n## ⚙️ Sample inputs\n\nThis is the Store example input — the same input Apify's automated check runs — so it is proven to return rows on the current build. Paste it into the input form, or send it through the API, CLI or a schedule:\n\n```json\n{\n  \"people\": [\n    {\n      \"fullName\": \"Patrick Collison\",\n      \"companyDomain\": \"stripe.com\"\n    }\n  ],\n  \"verify\": true\n}\n```\n\n## 🔧 Input reference\n\n| Field | Type | Default | What it does |\n|---|---|---|---|\n| `people` (required) | array | `[{\"fullName\": \"Patrick Collison\", \"company\": \"Stripe\"}, {\"f…` | People to find business emails for. Each item is {\"fullName\": ..., \"company\": ...} where company can be a website domain (stripe.com), a company name (Stripe, Acme Inc) or a Linke… |\n| `verify` | boolean | `true` | When enabled (default), each company domain is checked for valid DNS MX records and the email provider (Google Workspace, Microsoft 365, etc.) is detected. Disable to skip DNS loo… |\n| `notionConnector` | string |  | Optional. Connect your Notion workspace and the resolved business emails are also written as a Notion page in the same run — the Actor never sees your Notion credentials. Authoriz… |\n| `notionParentId` | string |  | Optional. The Notion page ID to create the page under. If blank, Notion creates a private page in your workspace. |\n| `supabaseConnector` | string |  | Optional. Connect your own Supabase project and the results are also inserted into a table in the same run — the Actor never sees your Supabase credentials. Authorize a write-scop… |\n| `supabaseTable` | string | `\"nexgendata_leads\"` | Target table in the public schema (created if missing, with id, a jsonb data column, and a scraped_at timestamp). Default: nexgendata_leads. |\n| `supabaseProjectId` | string |  | Your Supabase project reference (e.g. abcdefghijklmnop). Required unless your connector URL is already project-scoped. Find it in your project URL: supabase.com/dashboard/project/… |\n| `deliveryDedup` | boolean | `true` | When on (default), records already delivered in a previous run are not delivered again to the same destination — so scheduled runs only push new items. Turn off to deliver every r… |\n\n## 🧾 JSON sample record\n\nOne real record from run `xcOSMlTDGTswbpZXe` (emails/phones masked, long text shortened):\n\n```json\n{\n  \"full_name\": \"Patrick Collison\",\n  \"company_domain\": \"stripe.com\",\n  \"company_input\": \"Stripe\",\n  \"domain_resolved_from\": \"company-name lookup\",\n  \"best_email\": \"[email on record]\",\n  \"candidate_emails\": [\n    {\n      \"email\": \"[email on record]\",\n      \"pattern\": \"first.last\",\n      \"rank\": 1\n    },\n    {\n      \"email\": \"[email on record]\",\n      \"pattern\": \"firstlast\",\n      \"rank\": 2\n    },\n    {\n      \"email\": \"[email on record]\",\n      \"pattern\": \"flast\",\n      \"rank\": 3\n    },\n    {\n      \"email\": \"[email on record]\",\n      \"pattern\": \"first\",\n      \"rank\": 4\n    },\n    {\n      \"email\": \"[email on record]\",\n      \"pattern\": \"first_last\",\n      \"rank\": 5\n    },\n    {\n      \"email\": \"[email on record]\",\n      \"pattern\": \"f.last\",\n      \"rank\": 6\n    },\n    {\n      \"email\": \"[email on record]\",\n      \"pattern\": \"firstl\",\n      \"rank\": 7\n    },\n    {\n      \"email\": \"[email on record]\",\n      \"pattern\": \"last.first\",\n      \"rank\": 8\n    },\n    \"…\"\n  ],\n  \"mx_verified\": true,\n  \"email_provider\": \"Google Workspace\",\n  \"confidence\": \"high\",\n  \"is_free_provider\": false,\n  \"mx_records\": [\n    {\n      \"priority\": 10,\n      \"server\": \"aspmx.l.google.com\"\n    },\n    {\n      \"priority\": 20,\n      \"server\": \"alt2.aspmx.l.google.com\"\n    },\n    {\n      \"priority\": 20,\n      \"server\": \"alt1.aspmx.l.google.com\"\n    },\n    {\n      \"priority\": 30,\n      \"server\": \"aspmx2.googlemail.com\"\n    },\n    {\n      \"priority\": 30,\n      \"server\": \"aspmx3.googlemail.com\"\n    }\n  ],\n  \"data_source\": \"Business email pattern inference + public DNS MX\",\n  \"as_of_timestamp\": \"2026-09-24T23:58:22.415916+00:00\"\n}\n```\n\n## 💰 Pricing\n\n| Event | Price (USD) | When it is charged |\n|---|---|---|\n| Actor Start (`apify-actor-start`) | $0.005 | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). |\n| Business email found (`result`) | $0.02 | Charged per person with a resolved business email. |\n\nPay-per-event: you pay only for what the run delivers. A run that delivers nothing bills no result events (only the actor-start event, when the actor defines one). Example: a run that delivers 100 results costs 100 × $0.02 = $2.00 plus the start fee.\n\n## 🔗 Related Actors\n\nMore from the NexGenData **Leads, contacts & enrichment** family:\n\n- [Leads to Notion CRM — Verified Lead Delivery API](https://apify.com/nexgendata/leads-to-notion-crm?fpr=2ayu9b)\n- [Local Business Leads — Google Maps + Verified Emails API](https://apify.com/nexgendata/local-business-leads-scraper?fpr=2ayu9b)\n- [Website Tech & Contact Audit — Tech Stack + Emails API](https://apify.com/nexgendata/local-business-tech-contact-audit?fpr=2ayu9b)\n- [Person Enrichment API — Name & Company to Public Profile](https://apify.com/nexgendata/person-enrichment-lookup?fpr=2ayu9b)\n- [Phone Number Validation API — Format, Carrier & Line Type](https://apify.com/nexgendata/phone-number-validator?fpr=2ayu9b)\n- [Restaurant & Food Business Leads — Local Prospect Lists API](https://apify.com/nexgendata/restaurant-food-business-leads?fpr=2ayu9b)\n\n30 more in this family on the [NexGenData Store page](https://apify.com/nexgendata?fpr=2ayu9b).\n<!-- /ngd:generated -->\n\n## ✅ Pay only for a resolved result\nBilled **per person resolved**, not per attempt. If the company domain publishes no MX records, or the name/domain can't be used, that row is skipped — no row, no charge. If public DNS can't be reached at all, the run **fails** rather than finishing green and empty.\n\n### 🔎 How it works — and what \"verified\" does *not* mean\n1. The name is normalised (accents, titles, initials) and expanded into the 13 common business-email patterns (`first.last@`, `flast@`, `first@`, …), ranked by real-world frequency.\n2. The company domain is checked for **DNS MX records** on public DNS (3 attempts across the local, Cloudflare and Google resolvers). That tells us the domain can receive mail and which provider runs it (Google Workspace, Microsoft 365, Proofpoint, …).\n3. **No SMTP handshake, no mailbox probe, no list purchase.** `mx_verified: true` means *the domain accepts mail* — it is **not** a claim that the specific mailbox exists. Treat `best_email` as a high-confidence inference and use a mailbox-level validator before a large send.\n\n## 📊 What you get\nClean JSON, one record per resolved person:\n\n- `full_name` — Full name as supplied\n- `company_domain` — Normalised company domain\n- `best_email` — Highest-ranked inferred address\n- `candidate_emails` — All patterns, ranked\n- `mx_verified` — Domain publishes MX records (not a mailbox check)\n- `email_provider` — Mail provider detected from MX (e.g. Google Workspace)\n- `confidence` — high / medium / low\n- `is_free_provider` — Domain is a consumer mail provider\n- `mx_records` — Top MX records observed\n- `data_source` — \"Business email pattern inference + public DNS MX\"\n- `as_of_timestamp` — When the lookup ran\n\n**Pricing:** $0.005 per Actor start (per GB of memory) plus **$0.020 per result** delivered (Pay-Per-Event) — about **50 resolved people per $1**. Rows and charges are 1:1; skipped and failed lookups are never charged.\n\n## 🤖 Use with AI agents\nPoint Claude, the OpenAI Agents SDK, an n8n flow or any MCP-aware client at it and run prospecting on demand.\n\n**Agentic payments (x402):** Supports agentic payment via x402 — agents can call this actor with USDC, no API key required.\n\n## 🔗 Related lead-gen actors\n**The lead-gen workflow chain** — found leads? verify → enrich → push to CRM:\n\n1. **Find:** [B2B Leads Finder](https://apify.com/nexgendata/b2b-leads-finder) · [Company Email Finder](https://apify.com/nexgendata/company-email-finder) · [Website Contact Scraper](https://apify.com/nexgendata/contact-info-scraper) · [Yellow Pages](https://apify.com/nexgendata/yellow-pages-scraper)\n2. **Enrich:** [Company Enrichment](https://apify.com/nexgendata/company-enrichment-tool) · [B2B Contact Enricher](https://apify.com/nexgendata/b2b-contact-enricher) · [Lead List Enricher](https://apify.com/nexgendata/lead-list-enricher) · [Website Tech & Contact Audit](https://apify.com/nexgendata/local-business-tech-contact-audit)\n3. **Validate & clean:** [Email Verification](https://apify.com/nexgendata/email-verification-tool) · [Bulk Email Validator](https://apify.com/nexgendata/email-validator) · [Lead List Cleaner](https://apify.com/nexgendata/b2b-lead-list-cleaner)\n4. **Deliver:** [Leads to Notion CRM](https://apify.com/nexgendata/leads-to-notion-crm)\n\n**Front door — Sales Intelligence MCP:** the sales-intelligence agent that fronts this whole cluster → [Sales Intelligence MCP](https://apify.com/nexgendata/sales-intelligence-mcp)\n\n---\n*Public web & business-source data, assembled as sales-team prospect lists.*\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "person-business-email-finder",
      "title": "Person Business Email Finder — Name + Company → Verified Email",
      "description": "Give a person's name and their company domain; get the most likely PUBLIC business email plus ranked candidate patterns, MX verification, and email-provider detection. Public business-email pattern inference — no private data scraped.",
      "version": "0.0",
      "buildTag": "latest",
      "categories": [
        "LEAD_GENERATION",
        "BUSINESS"
      ],
      "meta": {
        "templateId": "python-start"
      },
      "input": {
        "title": "Person Business Email Finder Input",
        "description": "An email finder for one job: find email by name and company domain — you know who to reach, it returns their most likely business address.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "people": {
            "title": "People (name + company domain)",
            "type": "array",
            "description": "People to look up — the email finder needs a name and company domain for each (find email by name). People to find business emails for. Each item is {\"fullName\": ..., \"company\": ...} where company can be a website domain (stripe.com), a company name (Stripe, Acme Inc) or a LinkedIn company URL — names and URLs are resolved to the company's mail domain automatically. Also accepts 'Full Name, Company' lines.",
            "editor": "json",
            "prefill": [
              {
                "fullName": "Patrick Collison",
                "company": "Stripe"
              },
              {
                "fullName": "Brian Chesky",
                "companyDomain": "airbnb.com"
              }
            ],
            "example": [
              {
                "fullName": "Patrick Collison",
                "companyDomain": "stripe.com"
              }
            ]
          },
          "verify": {
            "title": "MX-verify domains",
            "type": "boolean",
            "description": "When enabled (default), each company domain is checked for valid DNS MX records and the email provider (Google Workspace, Microsoft 365, etc.) is detected. Disable to skip DNS lookups and return pattern candidates only.",
            "default": true,
            "prefill": true,
            "editor": "checkbox"
          },
          "notionConnector": {
            "title": "Deliver to Notion (optional)",
            "type": "string",
            "description": "Optional. Connect your Notion workspace and the resolved business emails are also written as a Notion page in the same run — the Actor never sees your Notion credentials. Authorize a Notion MCP connector in Apify Console → Settings → API & Integrations, then select it here.",
            "resourceType": "mcpConnector",
            "mcpServers": [
              {
                "url": "https://mcp.notion.com/*",
                "tools": {
                  "required": [
                    "*create*page*"
                  ]
                }
              }
            ],
            "editor": "resourcePicker",
            "nullable": true,
            "sectionCaption": "Deliver to Notion (MCP connector)",
            "sectionDescription": "Optional agentic delivery. Leave blank to just get the dataset as usual."
          },
          "notionParentId": {
            "title": "Notion parent page ID (optional)",
            "type": "string",
            "description": "Optional. The Notion page ID to create the page under. If blank, Notion creates a private page in your workspace.",
            "editor": "textfield",
            "nullable": true
          },
          "supabaseConnector": {
            "title": "Deliver to Supabase (optional)",
            "type": "string",
            "description": "Optional. Connect your own Supabase project and the results are also inserted into a table in the same run — the Actor never sees your Supabase credentials. Authorize a write-scoped, project-scoped Supabase MCP connector in Apify Console (Settings -> Integrations), then select it here.",
            "resourceType": "mcpConnector",
            "mcpServers": [
              {
                "url": "https://mcp.supabase.com/*",
                "tools": {
                  "required": [
                    "execute_sql"
                  ]
                }
              }
            ],
            "editor": "resourcePicker",
            "nullable": true,
            "sectionCaption": "Deliver to Supabase (MCP connector)",
            "sectionDescription": "Optional. Inserts each record as a JSONB row into a table in your Supabase project (created if missing). Leave blank to just get the dataset."
          },
          "supabaseTable": {
            "title": "Supabase table name (optional)",
            "type": "string",
            "description": "Target table in the public schema (created if missing, with id, a jsonb data column, and a scraped_at timestamp). Default: nexgendata_leads.",
            "editor": "textfield",
            "nullable": true,
            "default": "nexgendata_leads"
          },
          "supabaseProjectId": {
            "title": "Supabase project ID (optional)",
            "type": "string",
            "description": "Your Supabase project reference (e.g. abcdefghijklmnop). Required unless your connector URL is already project-scoped. Find it in your project URL: supabase.com/dashboard/project/THIS_PART.",
            "editor": "textfield",
            "nullable": true
          },
          "deliveryDedup": {
            "title": "Deduplicate deliveries across runs",
            "type": "boolean",
            "description": "When on (default), records already delivered in a previous run are not delivered again to the same destination — so scheduled runs only push new items. Turn off to deliver every record on every run.",
            "default": true
          }
        },
        "required": [
          "people"
        ]
      },
      "dockerfile": "./Dockerfile",
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "title": "Business emails",
          "views": {
            "overview": {
              "title": "Overview",
              "transformation": {
                "fields": [
                  "full_name",
                  "company_domain",
                  "best_email",
                  "confidence",
                  "mx_verified",
                  "email_provider",
                  "candidate_emails",
                  "data_source",
                  "as_of_timestamp"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "full_name": {
                    "label": "Name",
                    "format": "text"
                  },
                  "company_domain": {
                    "label": "Domain",
                    "format": "text"
                  },
                  "best_email": {
                    "label": "Best email",
                    "format": "text"
                  },
                  "confidence": {
                    "label": "Confidence",
                    "format": "text"
                  },
                  "mx_verified": {
                    "label": "MX verified",
                    "format": "boolean"
                  }
                }
              }
            }
          }
        }
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Person Email Finder results",
        "description": "Give a person's name plus their company domain and get the single most-likely verified public business email, with confidence and pattern. Built for targeted outreach when you know who to reach but no",
        "properties": {
          "results": {
            "type": "string",
            "title": "Results",
            "description": "Default dataset of Person Email Finder records (13 fields per row: full_name, company_domain, company_input, domain_resolved_from, best_email, candidate_emails, mx_verified, email_provider, confidence, is_free_provider, mx_records, data_source…).",
            "template": "{{links.apiDefaultDatasetUrl}}/items?view=overview"
          }
        }
      },
      "readme": "# Email Finder — Find Email by Name and Company Domain\n\nAn **email finder** for one job: **find email by name** and company domain — you know who to reach, it returns their most likely business address.\n\nGive it a name and a company domain, get back the most likely **public business email** — inferred from the standard address patterns companies use, with the company domain checked for DNS MX records. You pay only for a person we resolve.\n\n> Output is a prospect list for your sales team, assembled from public web and business sources. Use it in line with applicable outreach and privacy law.\n\n#> **Company names and LinkedIn company URLs are accepted** — `\"company\": \"Stripe\"` or a `linkedin.com/company/...` URL is resolved to the company's mail domain before the lookup (since 0.0.21). A name that cannot be resolved is skipped and not charged.\n\n<!-- ngd:generated -->\n<!-- generated 2026-09-25 from the live input schema, pricing and a real run on the current build; regenerated on every README ship -->\n\n## 📊 Sample Output\n\n![2 real rows delivered by Person Email Finder — Name + Company to Verified Email API — run xcOSMlTDGTswbpZXe on build 0.0.22](https://api.apify.com/v2/key-value-stores/8gLgXMBveEI1tTz1z/records/person-business-email-finder-sample)\n\n| `full_name` | `company_domain` | `company_input` | `domain_resolved_from` | `best_email` | `email_provider` |\n|---|---|---|---|---|---|\n| Patrick Collison | stripe.com | Stripe | company-name lookup | [email on record] | Google Workspace |\n| Brian Chesky | airbnb.com | airbnb.com | input | [email on record] | Google Workspace |\n\nReal rows from run `xcOSMlTDGTswbpZXe` on build 0.0.22 (2026-09-24), unedited apart from masked emails/phones and shortened long text; fields the source does not publish are empty.\n\n## ⚙️ Sample inputs\n\nThis is the Store example input — the same input Apify's automated check runs — so it is proven to return rows on the current build. Paste it into the input form, or send it through the API, CLI or a schedule:\n\n```json\n{\n  \"people\": [\n    {\n      \"fullName\": \"Patrick Collison\",\n      \"companyDomain\": \"stripe.com\"\n    }\n  ],\n  \"verify\": true\n}\n```\n\n## 🔧 Input reference\n\n| Field | Type | Default | What it does |\n|---|---|---|---|\n| `people` (required) | array | `[{\"fullName\": \"Patrick Collison\", \"company\": \"Stripe\"}, {\"f…` | People to find business emails for. Each item is {\"fullName\": ..., \"company\": ...} where company can be a website domain (stripe.com), a company name (Stripe, Acme Inc) or a Linke… |\n| `verify` | boolean | `true` | When enabled (default), each company domain is checked for valid DNS MX records and the email provider (Google Workspace, Microsoft 365, etc.) is detected. Disable to skip DNS loo… |\n| `notionConnector` | string |  | Optional. Connect your Notion workspace and the resolved business emails are also written as a Notion page in the same run — the Actor never sees your Notion credentials. Authoriz… |\n| `notionParentId` | string |  | Optional. The Notion page ID to create the page under. If blank, Notion creates a private page in your workspace. |\n| `supabaseConnector` | string |  | Optional. Connect your own Supabase project and the results are also inserted into a table in the same run — the Actor never sees your Supabase credentials. Authorize a write-scop… |\n| `supabaseTable` | string | `\"nexgendata_leads\"` | Target table in the public schema (created if missing, with id, a jsonb data column, and a scraped_at timestamp). Default: nexgendata_leads. |\n| `supabaseProjectId` | string |  | Your Supabase project reference (e.g. abcdefghijklmnop). Required unless your connector URL is already project-scoped. Find it in your project URL: supabase.com/dashboard/project/… |\n| `deliveryDedup` | boolean | `true` | When on (default), records already delivered in a previous run are not delivered again to the same destination — so scheduled runs only push new items. Turn off to deliver every r… |\n\n## 🧾 JSON sample record\n\nOne real record from run `xcOSMlTDGTswbpZXe` (emails/phones masked, long text shortened):\n\n```json\n{\n  \"full_name\": \"Patrick Collison\",\n  \"company_domain\": \"stripe.com\",\n  \"company_input\": \"Stripe\",\n  \"domain_resolved_from\": \"company-name lookup\",\n  \"best_email\": \"[email on record]\",\n  \"candidate_emails\": [\n    {\n      \"email\": \"[email on record]\",\n      \"pattern\": \"first.last\",\n      \"rank\": 1\n    },\n    {\n      \"email\": \"[email on record]\",\n      \"pattern\": \"firstlast\",\n      \"rank\": 2\n    },\n    {\n      \"email\": \"[email on record]\",\n      \"pattern\": \"flast\",\n      \"rank\": 3\n    },\n    {\n      \"email\": \"[email on record]\",\n      \"pattern\": \"first\",\n      \"rank\": 4\n    },\n    {\n      \"email\": \"[email on record]\",\n      \"pattern\": \"first_last\",\n      \"rank\": 5\n    },\n    {\n      \"email\": \"[email on record]\",\n      \"pattern\": \"f.last\",\n      \"rank\": 6\n    },\n    {\n      \"email\": \"[email on record]\",\n      \"pattern\": \"firstl\",\n      \"rank\": 7\n    },\n    {\n      \"email\": \"[email on record]\",\n      \"pattern\": \"last.first\",\n      \"rank\": 8\n    },\n    \"…\"\n  ],\n  \"mx_verified\": true,\n  \"email_provider\": \"Google Workspace\",\n  \"confidence\": \"high\",\n  \"is_free_provider\": false,\n  \"mx_records\": [\n    {\n      \"priority\": 10,\n      \"server\": \"aspmx.l.google.com\"\n    },\n    {\n      \"priority\": 20,\n      \"server\": \"alt2.aspmx.l.google.com\"\n    },\n    {\n      \"priority\": 20,\n      \"server\": \"alt1.aspmx.l.google.com\"\n    },\n    {\n      \"priority\": 30,\n      \"server\": \"aspmx2.googlemail.com\"\n    },\n    {\n      \"priority\": 30,\n      \"server\": \"aspmx3.googlemail.com\"\n    }\n  ],\n  \"data_source\": \"Business email pattern inference + public DNS MX\",\n  \"as_of_timestamp\": \"2026-09-24T23:58:22.415916+00:00\"\n}\n```\n\n## 💰 Pricing\n\n| Event | Price (USD) | When it is charged |\n|---|---|---|\n| Actor Start (`apify-actor-start`) | $0.005 | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). |\n| Business email found (`result`) | $0.02 | Charged per person with a resolved business email. |\n\nPay-per-event: you pay only for what the run delivers. A run that delivers nothing bills no result events (only the actor-start event, when the actor defines one). Example: a run that delivers 100 results costs 100 × $0.02 = $2.00 plus the start fee.\n\n## 🔗 Related Actors\n\nMore from the NexGenData **Leads, contacts & enrichment** family:\n\n- [Leads to Notion CRM — Verified Lead Delivery API](https://apify.com/nexgendata/leads-to-notion-crm?fpr=2ayu9b)\n- [Local Business Leads — Google Maps + Verified Emails API](https://apify.com/nexgendata/local-business-leads-scraper?fpr=2ayu9b)\n- [Website Tech & Contact Audit — Tech Stack + Emails API](https://apify.com/nexgendata/local-business-tech-contact-audit?fpr=2ayu9b)\n- [Person Enrichment API — Name & Company to Public Profile](https://apify.com/nexgendata/person-enrichment-lookup?fpr=2ayu9b)\n- [Phone Number Validation API — Format, Carrier & Line Type](https://apify.com/nexgendata/phone-number-validator?fpr=2ayu9b)\n- [Restaurant & Food Business Leads — Local Prospect Lists API](https://apify.com/nexgendata/restaurant-food-business-leads?fpr=2ayu9b)\n\n30 more in this family on the [NexGenData Store page](https://apify.com/nexgendata?fpr=2ayu9b).\n<!-- /ngd:generated -->\n\n## ✅ Pay only for a resolved result\nBilled **per person resolved**, not per attempt. If the company domain publishes no MX records, or the name/domain can't be used, that row is skipped — no row, no charge. If public DNS can't be reached at all, the run **fails** rather than finishing green and empty.\n\n### 🔎 How it works — and what \"verified\" does *not* mean\n1. The name is normalised (accents, titles, initials) and expanded into the 13 common business-email patterns (`first.last@`, `flast@`, `first@`, …), ranked by real-world frequency.\n2. The company domain is checked for **DNS MX records** on public DNS (3 attempts across the local, Cloudflare and Google resolvers). That tells us the domain can receive mail and which provider runs it (Google Workspace, Microsoft 365, Proofpoint, …).\n3. **No SMTP handshake, no mailbox probe, no list purchase.** `mx_verified: true` means *the domain accepts mail* — it is **not** a claim that the specific mailbox exists. Treat `best_email` as a high-confidence inference and use a mailbox-level validator before a large send.\n\n## 📊 What you get\nClean JSON, one record per resolved person:\n\n- `full_name` — Full name as supplied\n- `company_domain` — Normalised company domain\n- `best_email` — Highest-ranked inferred address\n- `candidate_emails` — All patterns, ranked\n- `mx_verified` — Domain publishes MX records (not a mailbox check)\n- `email_provider` — Mail provider detected from MX (e.g. Google Workspace)\n- `confidence` — high / medium / low\n- `is_free_provider` — Domain is a consumer mail provider\n- `mx_records` — Top MX records observed\n- `data_source` — \"Business email pattern inference + public DNS MX\"\n- `as_of_timestamp` — When the lookup ran\n\n**Pricing:** $0.005 per Actor start (per GB of memory) plus **$0.020 per result** delivered (Pay-Per-Event) — about **50 resolved people per $1**. Rows and charges are 1:1; skipped and failed lookups are never charged.\n\n## 🤖 Use with AI agents\nPoint Claude, the OpenAI Agents SDK, an n8n flow or any MCP-aware client at it and run prospecting on demand.\n\n**Agentic payments (x402):** Supports agentic payment via x402 — agents can call this actor with USDC, no API key required.\n\n## 🔗 Related lead-gen actors\n**The lead-gen workflow chain** — found leads? verify → enrich → push to CRM:\n\n1. **Find:** [B2B Leads Finder](https://apify.com/nexgendata/b2b-leads-finder) · [Company Email Finder](https://apify.com/nexgendata/company-email-finder) · [Website Contact Scraper](https://apify.com/nexgendata/contact-info-scraper) · [Yellow Pages](https://apify.com/nexgendata/yellow-pages-scraper)\n2. **Enrich:** [Company Enrichment](https://apify.com/nexgendata/company-enrichment-tool) · [B2B Contact Enricher](https://apify.com/nexgendata/b2b-contact-enricher) · [Lead List Enricher](https://apify.com/nexgendata/lead-list-enricher) · [Website Tech & Contact Audit](https://apify.com/nexgendata/local-business-tech-contact-audit)\n3. **Validate & clean:** [Email Verification](https://apify.com/nexgendata/email-verification-tool) · [Bulk Email Validator](https://apify.com/nexgendata/email-validator) · [Lead List Cleaner](https://apify.com/nexgendata/b2b-lead-list-cleaner)\n4. **Deliver:** [Leads to Notion CRM](https://apify.com/nexgendata/leads-to-notion-crm)\n\n**Front door — Sales Intelligence MCP:** the sales-intelligence agent that fronts this whole cluster → [Sales Intelligence MCP](https://apify.com/nexgendata/sales-intelligence-mcp)\n\n---\n*Public web & business-source data, assembled as sales-team prospect lists.*\n"
    },
    "buildNumber": "0.0.32",
    "imageDigest": "fc76ccee2d583ff84ffecc5ffefbfd7080d8aad2f2faf778304490208ee412fb",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "dev",
      "versionNumber": "0.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.01775111111111111
    }
  }
}