{
  "openapi": "3.0.1",
  "info": {
    "title": "Public B2B Contact Lookup — Lusha Alternative",
    "description": "Look up public business contact evidence for people and employer domains you already know. Export published contact values, source URLs, page context, timestamps, and per-contact outcomes for CRM review.",
    "version": "0.1",
    "x-build-id": "CjK8T1yyn5tcjyr0I"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~lusha-alternative/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-lusha-alternative",
        "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/khadinakbar~lusha-alternative/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-lusha-alternative",
        "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/khadinakbar~lusha-alternative/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-lusha-alternative",
        "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",
        "required": [
          "contacts"
        ],
        "properties": {
          "contacts": {
            "title": "Known B2B contacts",
            "minItems": 1,
            "maxItems": 25,
            "type": "array",
            "description": "Provide 1 to 25 people you already know, each with a full name and the employer’s public website domain. Optional companyName and externalId are carried through so the returned evidence can join back to your CRM or spreadsheet. Optional sourceUrls must be HTTPS pages on that same employer domain and are checked before standard public pages. This Actor is not a free-text people search, LinkedIn scraper, email-pattern generator, or outreach tool.",
            "items": {
              "type": "object",
              "properties": {
                "fullName": {
                  "title": "Full name",
                  "type": "string",
                  "description": "The full name of the professional contact you already know, for example Ada Lovelace. A first and last name are required so a public-page name match can be evaluated. The Actor does not use this value to query an external people database. It does not infer identity from initials or a partial name."
                },
                "companyDomain": {
                  "title": "Company domain",
                  "type": "string",
                  "description": "The employer’s canonical public hostname or homepage URL, for example example.com or https://example.com. The Actor visits only this hostname, its subdomains, and up to three bounded public routes. Do not provide a social profile, third-party directory, IP address, or private network URL. Redirects leaving the supplied company domain are rejected."
                },
                "companyName": {
                  "title": "Company name",
                  "type": "string",
                  "description": "Optional employer name you already know, such as Example Ltd. It is preserved beside page evidence to make CRM matching easier. The Actor does not treat it as independently verified. It does not cause a separate company search."
                },
                "externalId": {
                  "title": "External ID",
                  "type": "string",
                  "description": "Optional caller-owned CRM or spreadsheet key, for example crm-001. It is copied unchanged into the result as a stable join key. The value is not used as a lookup query. Do not place credentials or sensitive notes in this field."
                },
                "sourceUrls": {
                  "title": "Company-owned source URLs",
                  "type": "array",
                  "description": "Optional public HTTPS pages on the same supplied company domain where the person may appear. These pages are tried before standard homepage, about, team, leadership, and contact routes. URLs with credentials, ports, query strings, fragments, or another domain are ignored. The Actor does not fetch LinkedIn, directories, or private portals through this field.",
                  "editor": "stringList",
                  "maxItems": 5,
                  "items": {
                    "type": "string"
                  }
                }
              },
              "required": [
                "fullName",
                "companyDomain"
              ]
            }
          },
          "maxContacts": {
            "title": "Maximum contacts to process",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "Hard cap on distinct valid contacts processed in one run. Defaults to 25 and accepts 1 to 25, limiting public-page collection and the maximum public-contact-found event charge. Duplicate name-and-domain entries are skipped before collection. Apify platform usage is billed separately to the caller.",
            "default": 25
          },
          "maxPagesPerContact": {
            "title": "Maximum public pages per contact",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "How many public company-owned pages to inspect per contact, from 1 to 3. The Actor tries caller-provided source URLs first, then bounded standard public routes. Defaults to 3 to make the evidence set small and reviewable. It never crawls a whole website or follows a redirect to another domain.",
            "default": 3
          },
          "requestTimeoutSecs": {
            "title": "Request timeout in seconds",
            "minimum": 5,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum wait for each direct or fallback public-page request. Defaults to 10 seconds and accepts 5 to 20 seconds, keeping a single run bounded. A transient or blocked direct request gets one short retry and, if enabled, one Apify Unblocker fallback. This does not extend the overall Actor timeout.",
            "default": 10
          },
          "responseFormat": {
            "title": "Response detail",
            "enum": [
              "detailed",
              "concise"
            ],
            "type": "string",
            "description": "Choose detailed to include a short surrounding role snippet for every name match, or concise to omit snippets while keeping source URLs and structured evidence. Defaults to detailed for human review. The setting does not change which pages are fetched. It does not infer a title, email, or phone number when evidence is absent.",
            "default": "detailed"
          },
          "useApifyUnblockerFallback": {
            "title": "Use Apify Unblocker fallback",
            "type": "boolean",
            "description": "After a direct request is blocked or transiently unavailable, make one bounded retry through Apify Unblocker. Defaults to true to improve public-page reachability while preserving the same domain and redirect checks. Unblocker is Apify platform usage paid by the caller, not an external contact-data subscription. Disable it for a direct-only control run.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}