{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Email & Contact Scraper — Pay Only for Hits",
    "description": "Turn any list of websites into ready-to-use leads: emails, phones, LinkedIn, Instagram and 9 more social profiles, plus address. Pay only for sites with contacts. Schedule it daily, weekly or monthly in Apify, n8n, Make or Zapier and pay only for new or changed contacts.",
    "version": "1.1",
    "x-build-id": "s6Pn5lmNsNeZPgRzI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fermaja~website-contact-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fermaja-website-contact-scraper",
        "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/fermaja~website-contact-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fermaja-website-contact-scraper",
        "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/fermaja~website-contact-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fermaja-website-contact-scraper",
        "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 to scan, one per line. Bare domains (acme.com), full URLs (https://www.acme.com/contact) and duplicates are all fine: each site is scanned once. Social networks and marketplaces (facebook.com, amazon.com…) are skipped because they are not company websites.",
            "items": {
              "type": "string"
            }
          },
          "datasetId": {
            "title": "Import websites from a dataset (optional)",
            "type": "string",
            "description": "Pick a dataset from another run (or pass its ID, e.g. {{ $json.defaultDatasetId }} in n8n), such as a Google Maps, Product Hunt or directory scrape. Websites are read from the column named below and added to the list above. The scraper only gets read access to this one dataset."
          },
          "datasetField": {
            "title": "Website column in that dataset",
            "type": "string",
            "description": "Name of the field that holds the website URL. Dot notation works for nested fields (e.g. \"company.website\").",
            "default": "website"
          },
          "maxPagesPerSite": {
            "title": "Pages per website",
            "type": "integer",
            "description": "How many pages to visit on each website: the homepage plus the best contact, imprint, about and team pages. 5 finds most contacts; raise it for large company sites with team directories. Range 1-30; other values are adjusted automatically.",
            "default": 5
          },
          "maxWebsites": {
            "title": "Max websites",
            "type": "integer",
            "description": "Stop after this many websites (0 = all). Handy for a quick test on a long list.",
            "default": 0
          },
          "maxConcurrency": {
            "title": "Websites in parallel",
            "type": "integer",
            "description": "How many websites are scanned at the same time. Each site is crawled politely, one page at a time. Above 20, give the run more memory (1 GB or more). Range 1-50.",
            "default": 10
          },
          "requestTimeoutSecs": {
            "title": "Page timeout",
            "type": "integer",
            "description": "Give up on a page that does not answer within this time. Range 5-120 seconds.",
            "default": 20
          },
          "defaultCountry": {
            "title": "Default country for phone numbers",
            "type": "string",
            "description": "Country used to read local phone numbers such as (212) 555-0123 on .com/.net sites: a 2-letter code (US, GB, DE) or a name (United States). Leave empty to detect it from the domain ending, the site's address data and its language."
          },
          "includeSitesWithoutContacts": {
            "title": "Also list websites without contacts",
            "type": "boolean",
            "description": "Adds a free row for every website where nothing was found or that could not be loaded (with the reason in \"status\"), so your list stays complete. These rows are never charged.",
            "default": true
          },
          "respectRobotsTxt": {
            "title": "Respect robots.txt",
            "type": "boolean",
            "description": "Skip pages that a website's robots.txt asks crawlers not to visit. Recommended.",
            "default": true
          },
          "onlyNewContacts": {
            "title": "Only new or changed contacts (for schedules)",
            "type": "boolean",
            "description": "For daily, weekly or monthly runs on the same list. The scraper remembers every email, phone, social profile and address it has found, and you pay only for websites that are new to the list or show a new contact detail since an earlier run. Websites with nothing new are free and are listed as \"unchanged\" without contact details (only when \"Also list websites without contacts\" is on). The first run with a monitor charges every website with contacts, as usual.",
            "default": false
          },
          "monitorId": {
            "title": "Monitor name",
            "type": "string",
            "description": "Memory used by the option above, stored in your own Apify account (key-value store \"website-contact-monitor\"). Use a different name for each list you track, e.g. \"crm-weekly\" or \"dentists-nyc\". Letters, numbers, - and _.",
            "default": "default"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Most company websites work without a proxy. If many sites in your list return \"blocked\", enable Apify Proxy: it is only used for websites that refuse a direct visit.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}