{
  "openapi": "3.0.1",
  "info": {
    "title": "Founder Email Finder by Domain — Hunter.io Alternative $1.5/1k",
    "description": "Domain or website in: the founder or owner's name and email out (labelled published on site or guessed), plus the best company email, phone and LinkedIn. Also reads a Google Maps dataset, or finds companies by industry in the Singapore (or UK) registry. $1.50 per 1,000 with contacts.",
    "version": "0.1",
    "x-build-id": "MBTGWREfSyC6J2xAL"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/intropi~company-contacts-tech-lookup/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-intropi-company-contacts-tech-lookup",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/intropi~company-contacts-tech-lookup/runs": {
      "post": {
        "operationId": "runs-sync-intropi-company-contacts-tech-lookup",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/intropi~company-contacts-tech-lookup/run-sync": {
      "post": {
        "operationId": "run-sync-intropi-company-contacts-tech-lookup",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "websites": {
            "title": "Websites",
            "type": "array",
            "description": "Company websites or domains, one per line: plumber.com, https://www.acme.co.uk, or even an email like jane@acme.io (its domain is used). Duplicates are removed. You get each company's owner or founder name and email when the site names them, plus the best company inbox, phones and LinkedIn. Got a Google Maps scrape instead? Put its dataset ID in \"Google Maps dataset ID\" below. To find companies by industry, leave this empty and fill the section \"Or find companies by industry\".",
            "items": {
              "type": "string"
            }
          },
          "datasetId": {
            "title": "Google Maps dataset ID",
            "type": "string",
            "description": "Optional. The ID (or link) of any Apify dataset with a website column, for example the output of a Google Maps scraper (compass/crawler-google-places, aurelix/google-maps-scraper and others) that gave you no emails. The website is taken from the field website, site or domain (or url, unless it is a Google Maps link). Places without a website, with only a Facebook or Instagram page, or with a domain already listed are skipped. The place name, phone, address, category, place ID and Maps link are kept as mapsPlaceName, mapsPhone, mapsAddress, mapsCategory, mapsPlaceId and mapsUrl. Pick the dataset, or paste its ID from the scraper run's Storage tab. Can be combined with \"Websites\". To chain it automatically, add an integration to your Google Maps task: when the run succeeds, run this Actor with {\"datasetId\": \"{{resource.defaultDatasetId}}\"}."
          },
          "maxPagesPerSite": {
            "title": "Pages to read per website",
            "minimum": 1,
            "maximum": 15,
            "type": "integer",
            "description": "The home page plus the best contact, about and imprint pages. 5 finds nearly everything; raise it for large sites. You are charged per company, not per page. Also used for the websites found by industry.",
            "default": 5
          },
          "checkEmailDomains": {
            "title": "Drop emails whose domain cannot receive mail",
            "type": "boolean",
            "description": "Checks each email domain for mail servers (MX records) and removes addresses that would bounce for that reason. Applies in both modes.",
            "default": true
          },
          "includeTechnologies": {
            "title": "Detect technologies",
            "type": "boolean",
            "description": "Lists the tools the site uses: Shopify, WordPress, HubSpot, Stripe, Intercom, Google Ads, Meta Pixel and 80 more common tools. Applies in both modes.",
            "default": true
          },
          "onlyWithContacts": {
            "title": "Only output companies with contacts",
            "type": "boolean",
            "description": "Leave off to also get a free row for each site that could not be loaded or had no contacts, with the reason. When finding companies by industry, on keeps only companies whose website gave an email or phone number (the ones you pay for).",
            "default": false
          },
          "concurrency": {
            "title": "Websites (or companies) at the same time",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many websites to read in parallel. Leave empty for the default: 10 when looking up websites, 5 when finding companies by industry (at most 20 there)."
          },
          "lookUpNpiOwners": {
            "title": "Look up US healthcare owners in the official NPI registry",
            "type": "boolean",
            "description": "For US dental, medical, chiropractic, optometry, therapy and similar practices (not vets), looks the practice up in the free federal NPI Registry and adds its registered owner or authorized official (for example \"Owner\", \"President\", \"Medical Director\") to founders, with founderSource \"US NPI Registry\" and npiNumber. Used as founderName when the website names nobody. Only accepted when the registered name matches the business name and the city or ZIP code matches; unclear matches are skipped, never guessed. When no organisation record matches, also lists individual dentists or doctors registered at the practice's street address in npiProviders (role \"owner\" only when the website says so, otherwise \"dentist at practice\"). Needs the state, from the Google Maps fields or the site's address. Free; no extra charge.",
            "default": true
          },
          "lookUpArchivedPages": {
            "title": "Look in older copies of the site",
            "type": "boolean",
            "description": "When the website names no founder or owner today, read older copies of its about and team pages in the Internet Archive (Wayback Machine). Founders found this way are marked founderSource \"website (archived copy)\" with the copy's date, because people may have changed since. Off by default: it adds time per company.",
            "default": false
          },
          "country": {
            "title": "Country",
            "enum": [
              "SG",
              "GB"
            ],
            "type": "string",
            "description": "Which official registry to search. Singapore: ACRA (data.gov.sg), with SSIC industry codes, the company's own description of its business, registration date, status and officer count. United Kingdom: Companies House, with SIC 2007 codes, incorporation date, status and registered office address; officer counts only when you set \"Maximum number of officers\". Industry codes differ by country, so pick codes from that country's list.",
            "default": "SG"
          },
          "industryKeywords": {
            "title": "Industry keywords",
            "type": "array",
            "description": "Words that describe the business, one per line, e.g. accounting, payroll. Matched against the industry descriptions (and, in Singapore, the company's own description of its business), not company names. Many companies give no description of their own, so keywords alone miss most firms: add industry codes for a full search. Fill this, industry codes, or both. Example: payroll.",
            "items": {
              "type": "string"
            }
          },
          "industryCodes": {
            "title": "Industry codes",
            "type": "array",
            "description": "The reliable way to search: every company has one. Use the selected country's codes; a code can be shortened to its first digits (\"692\" covers all 692xx). Singapore (SSIC): 69201 accounting, 70201 management consultancy, 70204 HR consultancy, 70205 marketing/PR consultancy, 78300 HR management/outsourcing, 78104 employment agencies, 62011 software development, 62021 IT consultancy, 73100 advertising. United Kingdom (SIC 2007): 69201 accounting and auditing, 69202 bookkeeping, 62012 software development, 62020 IT consultancy, 70229 management consultancy, 73110 advertising agencies, 78109 employment placement, 78300 HR provision. A company matches a code or a keyword. Example: 69201 and 78300.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Optional. Only companies registered in this place. Singapore: a postal code or its first digits (e.g. 079 or 018989) or words from the address (e.g. Anson Road). United Kingdom: a town or city (e.g. Manchester) or a postcode start (e.g. EC1). Leave empty for the whole country."
          },
          "minYearsOperating": {
            "title": "Minimum years operating",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Only companies registered at least this many years ago. 2 skips most brand-new and shelf companies. 0 = no minimum.",
            "default": 2
          },
          "maxYearsOperating": {
            "title": "Maximum years operating",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Optional. Only companies registered at most this many years ago."
          },
          "maxOfficers": {
            "title": "Maximum number of officers",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Optional. Officers are the directors and company secretaries in the registry, not employees. Most small companies have 1 to 3, so this is only a rough size hint. In the UK, setting it makes the search slower (officers are looked up per company)."
          },
          "liveOnly": {
            "title": "Only live companies",
            "type": "boolean",
            "description": "Keep only companies that are trading: in Singapore the statuses Live, Live Company and Live (Receiver or Receiver and Manager appointed); in the UK \"active\". Skips struck off, dissolved and similar.",
            "default": true
          },
          "maxCompanies": {
            "title": "Maximum companies",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Stop after this many companies from the registry. Only companies whose website gave an email or phone number are charged, so this caps the cost. In Singapore a capped search takes about 20 to 80 seconds; a very large one 2 to 4 minutes.",
            "default": 100
          },
          "findWebsites": {
            "title": "Find websites",
            "type": "boolean",
            "description": "Look for each company's own website from its registered name, about 7 seconds per company. A site is only accepted when it shows the company's registration number (UEN or UK company number) or registered name, or its brand plus a sign of the right country. In Singapore testing it found the right site for 76% of SMEs from the name alone (84% with the web search below) and a wrong one for none.",
            "default": true
          },
          "searchForWebsites": {
            "title": "Search the web for websites guessing missed",
            "type": "boolean",
            "description": "When no website is found from the company name, search Google once for each such company (the name plus the country) and check the top results the same strict way. This finds companies trading under another brand. It runs Apify's Google Search Results Scraper (apify/google-search-scraper) on your Apify account, all searches in one run, costing about $0.0045 per company searched, billed by that Actor on top of this one. Turn off to never search.",
            "default": true
          },
          "maxSearches": {
            "title": "Maximum web searches",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "At most this many companies are searched (one search each, about $0.0045 per search). Leave empty to allow one per company (Maximum companies). 0 = no searches."
          },
          "includeContacts": {
            "title": "Get contacts from the website",
            "type": "boolean",
            "description": "Read the website's home, contact and about pages for emails, phone numbers, social profiles, founder and tech stack. Needs \"Find websites\".",
            "default": true
          },
          "onlyWithWebsite": {
            "title": "Only companies with a website",
            "type": "boolean",
            "description": "Leave out companies for which no verified website was found (they are free either way).",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}