{
  "openapi": "3.0.1",
  "info": {
    "title": "Prospect Search API - Work Email and Mobile Phone Finder",
    "description": "Search a B2B prospect database by job title, seniority, department, location, headcount, revenue, technologies and funding stage, then reveal verified work email addresses and mobile phone numbers. Count a segment for free before you reveal it. Pay per result. Bring your own API key.",
    "version": "0.1",
    "x-build-id": "GAXMgh6CV6GiignAd"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~prospect-search-contact-finder-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-prospect-search-contact-finder-api",
        "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/nabeelbaghoor~prospect-search-contact-finder-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-prospect-search-contact-finder-api",
        "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/nabeelbaghoor~prospect-search-contact-finder-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-prospect-search-contact-finder-api",
        "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": {
          "mode": {
            "title": "What to do",
            "enum": [
              "prospectSearch",
              "prospectList",
              "individualReveal",
              "companySearch",
              "companyEnrich",
              "credits"
            ],
            "type": "string",
            "description": "Prospect search counts the people matching your filters and returns a free sample without contact details. Prospect list reveals a whole segment, with work email addresses and phone numbers. Individual reveal works one named person or profile at a time. Company search and company enrichment work on accounts rather than people. Credits reports the balance left on your key.",
            "default": "prospectSearch"
          },
          "jobTitles": {
            "title": "Job titles",
            "type": "array",
            "description": "Job titles to match, one per line. Matching is on the title text, so \"head of sales\" and \"vp sales\" are two separate entries rather than one query. Used by prospect search, prospect list and the free preview.",
            "items": {
              "type": "string"
            }
          },
          "jobTitlesExcluded": {
            "title": "Job titles to exclude",
            "type": "array",
            "description": "Job titles to rule out, one per line. Excluding is how you keep assistants, interns and contractors out of a segment that otherwise matches.",
            "items": {
              "type": "string"
            }
          },
          "jobTitleLevels": {
            "title": "Seniority",
            "type": "array",
            "description": "Keep only people at these seniority levels. This is the provider's own banding, applied server side, so it narrows the segment rather than the dataset.",
            "items": {
              "type": "string",
              "enum": [
                "CXO",
                "VP",
                "Director",
                "Manager",
                "Owner",
                "Partner",
                "Senior",
                "Entry",
                "Training",
                "Unpaid"
              ],
              "enumTitles": [
                "CXO: chief officers",
                "VP: vice presidents",
                "Director",
                "Manager",
                "Owner",
                "Partner",
                "Senior individual contributor",
                "Entry level",
                "Training",
                "Unpaid"
              ]
            },
            "default": []
          },
          "jobRoles": {
            "title": "Department",
            "type": "array",
            "description": "Keep only people in these departments. Use this together with seniority when the title text varies too much to filter on directly.",
            "items": {
              "type": "string",
              "enum": [
                "sales",
                "marketing",
                "engineering",
                "operations",
                "finance",
                "human_resources",
                "customer_service",
                "design",
                "education",
                "health",
                "legal",
                "media",
                "public_relations",
                "real_estate",
                "trades"
              ]
            },
            "default": []
          },
          "jobSubRoles": {
            "title": "Sub department",
            "type": "array",
            "description": "Narrower functions inside a department, one per line, such as accounting, software or product management. The provider documents more than fifty of these, so they are taken as free text rather than as a dropdown that would go stale.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Person locations",
            "type": "array",
            "description": "Where the person is, one per line. A bare value is read as a city. Prefix it with a boundary and a colon to mean something else: state:California, country:United States, continent:Europe or group:EMEA.",
            "items": {
              "type": "string"
            }
          },
          "locationsExcluded": {
            "title": "Person locations to exclude",
            "type": "array",
            "description": "Locations to rule out, written the same way as above.",
            "items": {
              "type": "string"
            }
          },
          "companies": {
            "title": "Current companies",
            "type": "array",
            "description": "Only people currently at these companies, one per line. This is how you turn a filter set into an account based list.",
            "items": {
              "type": "string"
            }
          },
          "companiesExcluded": {
            "title": "Current companies to exclude",
            "type": "array",
            "description": "Companies to rule out, one per line, such as your own and your existing customers.",
            "items": {
              "type": "string"
            }
          },
          "pastCompanies": {
            "title": "Past companies",
            "type": "array",
            "description": "Only people who used to work at these companies, one per line. Alumni of a company you sell to are often the fastest route into the next one.",
            "items": {
              "type": "string"
            }
          },
          "domains": {
            "title": "Company domains",
            "type": "array",
            "description": "Company domains, one per line, used by individual reveal and company enrichment. A pasted URL is reduced to the bare hostname and an address is reduced to the part after the at sign, so a messy list still works.",
            "items": {
              "type": "string"
            }
          },
          "companyNames": {
            "title": "Company names",
            "type": "array",
            "description": "Company names, one per line, for individual reveal and company enrichment when you know the employer but not the domain.",
            "items": {
              "type": "string"
            }
          },
          "companySlugs": {
            "title": "Company profile slugs",
            "type": "array",
            "description": "Company profile slugs, one per line, for company enrichment. The slug is the last part of the company's profile URL.",
            "items": {
              "type": "string"
            }
          },
          "profileUrls": {
            "title": "Profile URLs",
            "type": "array",
            "description": "Profile URLs to reveal, one per line. This is the most accurate way to reveal a person, because it identifies exactly one profile rather than a name that several people share. Individual reveal only.",
            "items": {
              "type": "string"
            }
          },
          "emails": {
            "title": "Email addresses",
            "type": "array",
            "description": "Known email addresses to reveal the person behind, one per line. Individual reveal only.",
            "items": {
              "type": "string"
            }
          },
          "fullNames": {
            "title": "Full names",
            "type": "array",
            "description": "Full names to reveal, one per line. A name alone is not enough to identify anyone, so each name is paired with each company domain or company name above: ten names and one company is ten reveals. Individual reveal only.",
            "items": {
              "type": "string"
            }
          },
          "firstNames": {
            "title": "First names",
            "type": "array",
            "description": "Exact first names to match in a database search, one per line.",
            "items": {
              "type": "string"
            }
          },
          "lastNames": {
            "title": "Last names",
            "type": "array",
            "description": "Exact last names to match in a database search, one per line.",
            "items": {
              "type": "string"
            }
          },
          "skills": {
            "title": "Skills",
            "type": "array",
            "description": "Skills listed on the person's profile, one per line.",
            "items": {
              "type": "string"
            }
          },
          "schools": {
            "title": "Schools",
            "type": "array",
            "description": "Schools or universities attended, one per line.",
            "items": {
              "type": "string"
            }
          },
          "majors": {
            "title": "Fields of study",
            "type": "array",
            "description": "Fields of study, one per line.",
            "items": {
              "type": "string"
            }
          },
          "linkedinSlugs": {
            "title": "Profile slugs",
            "type": "array",
            "description": "Personal profile slugs to match exactly, one per line. The slug is the last part of a profile URL.",
            "items": {
              "type": "string"
            }
          },
          "lastRoleChange": {
            "title": "Changed role within",
            "enum": [
              "",
              "30d",
              "60d",
              "90d",
              "180d",
              "1y"
            ],
            "type": "string",
            "description": "Only people who started a new role inside this window. Someone ninety days into a new job is still choosing their tools, which is why this filter outperforms almost every other one on reply rate.",
            "default": ""
          },
          "lastCompanyChange": {
            "title": "Changed company within",
            "enum": [
              "",
              "30d",
              "60d",
              "90d",
              "180d",
              "1y"
            ],
            "type": "string",
            "description": "Only people who joined a new employer inside this window.",
            "default": ""
          },
          "companyLocations": {
            "title": "Company locations",
            "type": "array",
            "description": "Where the company is, one per line, written the same way as the person locations above. Use this rather than person location when the buying decision sits at headquarters.",
            "items": {
              "type": "string"
            }
          },
          "companyLocationsExcluded": {
            "title": "Company locations to exclude",
            "type": "array",
            "description": "Company locations to rule out, written the same way as above.",
            "items": {
              "type": "string"
            }
          },
          "companyIndustries": {
            "title": "Industries",
            "type": "array",
            "description": "Industries to include, one per line.",
            "items": {
              "type": "string"
            }
          },
          "companyIndustriesExcluded": {
            "title": "Industries to exclude",
            "type": "array",
            "description": "Industries to rule out, one per line.",
            "items": {
              "type": "string"
            }
          },
          "companySizes": {
            "title": "Company headcount",
            "type": "array",
            "description": "Keep only companies in these headcount bands. These are the provider's own bands, so they are offered exactly as documented rather than as a free range.",
            "items": {
              "type": "string",
              "enum": [
                "1-10",
                "11-50",
                "51-200",
                "201-500",
                "501-1000",
                "1001-5000",
                "5001-10000",
                "10001+"
              ]
            },
            "default": []
          },
          "revenue": {
            "title": "Company revenue",
            "type": "array",
            "description": "Keep only companies in these revenue bands.",
            "items": {
              "type": "string",
              "enum": [
                "$0-$1M",
                "$1M-$10M",
                "$10M-$25M",
                "$25M-$50M",
                "$50M-$100M",
                "$100M-$250M",
                "$250M-$500M",
                "$500M-$1B",
                "$1B-$10B",
                "$10B+"
              ]
            },
            "default": []
          },
          "companyTypes": {
            "title": "Company type",
            "type": "array",
            "description": "Keep only companies of these types.",
            "items": {
              "type": "string",
              "enum": [
                "private",
                "public",
                "educational",
                "government",
                "nonprofit",
                "public_subsidiary"
              ]
            },
            "default": []
          },
          "technologies": {
            "title": "Technologies used",
            "type": "array",
            "description": "Only companies running these technologies, one per line. Technographics are what turn a generic list into one where the first line of the email is about something the buyer already owns.",
            "items": {
              "type": "string"
            }
          },
          "technologiesExcluded": {
            "title": "Technologies to exclude",
            "type": "array",
            "description": "Rule out companies running these technologies, one per line, such as a competitor they have already bought.",
            "items": {
              "type": "string"
            }
          },
          "companyKeywords": {
            "title": "Company description keywords",
            "type": "array",
            "description": "Words that must appear in the company description, one per line.",
            "items": {
              "type": "string"
            }
          },
          "companyKeywordsExcluded": {
            "title": "Company description keywords to exclude",
            "type": "array",
            "description": "Words that must not appear in the company description, one per line.",
            "items": {
              "type": "string"
            }
          },
          "companyAnnualGrowth": {
            "title": "Headcount growth",
            "type": "array",
            "description": "Keep only companies growing headcount at these rates over the last year. Growth is the cheapest proxy there is for budget.",
            "items": {
              "type": "string",
              "enum": [
                "0-5%",
                "5-10%",
                "10-20%",
                "20-50%",
                "50-100%",
                "100%+"
              ]
            },
            "default": []
          },
          "departmentSizes": {
            "title": "Department headcount",
            "type": "array",
            "description": "Size of a named department, one per line, written as department:min-max, for example sales:10-50. A company with fifty engineers and two marketers is a different buyer from the reverse, even at the same total headcount.",
            "items": {
              "type": "string"
            }
          },
          "fundingStages": {
            "title": "Funding stage",
            "type": "array",
            "description": "Keep only companies at these funding stages.",
            "items": {
              "type": "string",
              "enum": [
                "pre_seed",
                "seed",
                "series_a",
                "series_b",
                "series_c",
                "series_d",
                "series_e-j",
                "other"
              ]
            },
            "default": []
          },
          "yearFoundedFrom": {
            "title": "Founded from",
            "type": "string",
            "description": "Earliest founding year, as a four digit year."
          },
          "yearFoundedTo": {
            "title": "Founded to",
            "type": "string",
            "description": "Latest founding year, as a four digit year."
          },
          "enrichmentLevel": {
            "title": "How much to reveal",
            "enum": [
              "none",
              "partial",
              "phone",
              "full"
            ],
            "type": "string",
            "description": "How much of each contact the provider resolves, and therefore how many of your credits a row costs. None returns the profile only, partial returns a work email where one is already known, phone adds the mobile number, and full runs the complete waterfall. Used by prospect list and individual reveal.",
            "default": "partial"
          },
          "acceptWorkEmail": {
            "title": "Accept work addresses",
            "type": "boolean",
            "description": "Accept work email addresses. Leave this on for B2B outreach.",
            "default": true
          },
          "acceptPersonalEmail": {
            "title": "Accept personal addresses",
            "type": "boolean",
            "description": "Accept personal email addresses as well. Turn this on only when you have a lawful basis for contacting people at a personal address.",
            "default": false
          },
          "acceptGenericEmail": {
            "title": "Accept generic addresses",
            "type": "boolean",
            "description": "Accept catch-all role addresses such as info@ and sales@. These reach a shared mailbox rather than the person you selected.",
            "default": false
          },
          "skipDuplicates": {
            "title": "Skip contacts already revealed",
            "type": "boolean",
            "description": "Skip contacts that earlier lists on this account already revealed, so the same person is not paid for twice. Prospect list only.",
            "default": false
          },
          "listName": {
            "title": "List name",
            "type": "string",
            "description": "The name the list is stored under on your provider account. Leave empty to name it after the run."
          },
          "listSegment": {
            "title": "Which contacts to return",
            "enum": [
              "people",
              "valid",
              "risky"
            ],
            "type": "string",
            "description": "Which slice of the finished list to write out. Valid returns only the addresses that passed verification, risky returns the ones that did not, and people returns everything the list resolved.",
            "default": "people"
          },
          "previewSize": {
            "title": "Preview sample size",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many sample profiles the free preview returns. The provider caps this at 30 however large the matching segment is; the segment's true size is reported on every row.",
            "default": 30
          },
          "jobTimeoutSeconds": {
            "title": "Job timeout in seconds",
            "minimum": 30,
            "maximum": 21600,
            "type": "integer",
            "description": "How long to wait for the provider to finish revealing a list or a person before giving up. Large lists take minutes, so this needs headroom; the actor polls with a widening interval rather than hammering the provider.",
            "default": 1800
          },
          "requestsPerMinute": {
            "title": "Requests per minute",
            "minimum": 1,
            "maximum": 600,
            "type": "integer",
            "description": "Pace the run under your plan's rate limit. Lower this if the provider starts refusing requests.",
            "default": 120
          },
          "skipNotFound": {
            "title": "Skip unresolved inputs",
            "type": "boolean",
            "description": "Leave inputs that resolved to nothing out of the dataset. They are kept by default, because knowing which people the provider has nothing on is what makes a run auditable. Unresolved rows are never charged for either way.",
            "default": false
          },
          "maxResults": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Hard cap on rows, and therefore on spend and run time. In prospect list mode this is also the number of profiles the provider is asked to reveal.",
            "default": 100
          },
          "apiKey": {
            "title": "API key",
            "type": "string",
            "description": "Your own API key for the prospecting API, taken from your provider account. Stored as a secret and never written to a log. You can also supply it as the DATA_API_KEY environment secret instead."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}