{
  "openapi": "3.0.1",
  "info": {
    "title": "Email Extractor from Text: Emails, Phones & URLs from Any Text",
    "description": "Email extractor from text: extract email addresses, phone numbers (E.164), URLs, domains and social handles from pasted text, PDF, DOCX, XLSX, CSV, HTML and EML files or datasets. Finds obfuscated emails like name [at] domain [dot] com. Syntax check only, nothing is sent.",
    "version": "0.1",
    "x-build-id": "JW2MuevKFr2D7AtfH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/data-done-right~email-extractor-from-text/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-data-done-right-email-extractor-from-text",
        "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/data-done-right~email-extractor-from-text/runs": {
      "post": {
        "operationId": "runs-sync-data-done-right-email-extractor-from-text",
        "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/data-done-right~email-extractor-from-text/run-sync": {
      "post": {
        "operationId": "run-sync-data-done-right-email-extractor-from-text",
        "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": {
          "texts": {
            "title": "Texts to scan",
            "type": "array",
            "description": "Paste the text(s) to scan, one text per entry (an entry can be a whole email thread, a page of notes or a CSV dump). Each text is one source. Example: Write to jane.doe [at] acme-example [dot] com or call +1 415 555 2671.",
            "items": {
              "type": "string"
            }
          },
          "fileUrls": {
            "title": "File URLs (optional)",
            "type": "array",
            "description": "Public links to PDF, DOCX, XLSX, CSV, TXT, HTML, EML or MSG files. The file is downloaded and its text is scanned. Public files only, no logins. Example: https://www.rfc-editor.org/rfc/rfc2822.txt",
            "items": {
              "type": "string"
            }
          },
          "datasetId": {
            "title": "Dataset with texts (optional)",
            "type": "string",
            "description": "Optional. Pick an Apify dataset (for example the output of a scraper) and the field below is scanned for every item. Example: a dataset ID such as aBcD1234eFgH5678i."
          },
          "datasetField": {
            "title": "Dataset field",
            "type": "string",
            "description": "Field of each dataset item that holds the text (or a list of texts). Dotted paths work. Example: description or contact.notes. Default: text.",
            "default": "text"
          },
          "extractEmails": {
            "title": "Extract emails",
            "type": "boolean",
            "description": "Find email addresses, including hidden ones such as name [at] domain [dot] com, name(at)domain.com, HTML entities and mailto: links. Example: true.",
            "default": true
          },
          "extractPhones": {
            "title": "Extract phone numbers",
            "type": "boolean",
            "description": "Find phone numbers and return them in E.164 format (for example +14155552671) with country and number type. Uses the default region below for numbers without a + prefix. Example: true.",
            "default": true
          },
          "extractUrls": {
            "title": "Extract URLs",
            "type": "boolean",
            "description": "Find web links starting with http://, https:// or www. and return them normalised. Example: true.",
            "default": true
          },
          "extractDomains": {
            "title": "Extract domains",
            "type": "boolean",
            "description": "Also return one row per domain, taken from the emails and URLs that were found (not guessed from plain words). Example: true to get a list of companies mentioned.",
            "default": false
          },
          "extractSocialHandles": {
            "title": "Extract social handles",
            "type": "boolean",
            "description": "Also return profile links of X/Twitter, Instagram, Facebook, LinkedIn, TikTok, YouTube, GitHub, Telegram, Threads and Pinterest, and @mentions. Example: true.",
            "default": false
          },
          "extractIbans": {
            "title": "Extract IBANs",
            "type": "boolean",
            "description": "Also return bank account numbers in IBAN format that pass the length and checksum test. Off by default because they are sensitive. Only use it on text you may process. Example: false.",
            "default": false
          },
          "defaultRegion": {
            "title": "Default phone region",
            "type": "string",
            "description": "2-letter country code used to read phone numbers written without a + prefix. Example: US, GB or DE. Leave empty to accept only numbers that start with + or 00.",
            "default": "US"
          },
          "dedupe": {
            "title": "Remove duplicates",
            "enum": [
              "global",
              "perSource",
              "off"
            ],
            "type": "string",
            "description": "global: one row per unique item across all sources, with a count and the list of sources. perSource: one row per unique item in each source. off: one row for every occurrence. Example: global.",
            "default": "global"
          },
          "lowercaseEmails": {
            "title": "Lowercase emails",
            "type": "boolean",
            "description": "Lowercase the normalised email address, so Jane.Doe@ACME.com and jane.doe@acme.com count as one. The original text stays in value. Example: true.",
            "default": true
          },
          "skipRoleAccounts": {
            "title": "Skip role accounts",
            "type": "boolean",
            "description": "Drop shared mailboxes such as info@, sales@, support@, admin@ and noreply@. Example: true to keep only personal-looking addresses.",
            "default": false
          },
          "domainAllowList": {
            "title": "Only these domains (allow list)",
            "type": "array",
            "description": "Optional. Keep only emails and URLs on these domains (subdomains included). Example: acme.com, example.org. Leave empty to keep all.",
            "items": {
              "type": "string"
            }
          },
          "domainDenyList": {
            "title": "Never these domains (deny list)",
            "type": "array",
            "description": "Optional. Drop emails and URLs on these domains (subdomains included). Example: gmail.com, yahoo.com, facebook.com.",
            "items": {
              "type": "string"
            }
          },
          "contextChars": {
            "title": "Context characters",
            "minimum": 0,
            "maximum": 300,
            "type": "integer",
            "description": "Characters of surrounding text to return on each side of the first match, so you can see where it came from. Use 0 to switch the snippet off. Range 0 to 300. Example: 60.",
            "default": 60
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 500000,
            "type": "integer",
            "description": "Maximum rows to return (and to be charged for) in this run. Further items are counted in the summary but not returned. Example: 1000.",
            "default": 1000
          },
          "maxSources": {
            "title": "Max sources",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Maximum texts, files and dataset items to read in this run. Example: 1000.",
            "default": 1000
          },
          "maxFileSizeMb": {
            "title": "Max file size (MB)",
            "minimum": 1,
            "maximum": 100,
            "type": "number",
            "description": "Files larger than this are skipped and reported. Example: 25.",
            "default": 25
          },
          "maxPdfPages": {
            "title": "Max PDF pages",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Only the first pages of a long PDF are read. Example: 200.",
            "default": 200
          },
          "maxCharsPerSource": {
            "title": "Max characters per source",
            "minimum": 1000,
            "maximum": 20000000,
            "type": "integer",
            "description": "A longer text or file is cut to this length before scanning, and the cut is reported. Example: 2000000.",
            "default": 2000000
          },
          "concurrency": {
            "title": "Parallel file downloads",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "How many file URLs are downloaded at the same time. Example: 4.",
            "default": 4
          },
          "timeoutSecs": {
            "title": "Download timeout (seconds)",
            "minimum": 5,
            "maximum": 300,
            "type": "number",
            "description": "Give up on a file URL after this many seconds. Example: 30.",
            "default": 30
          },
          "proxyConfiguration": {
            "title": "Proxy (optional, for file URLs)",
            "type": "object",
            "description": "Only used for file URLs. Leave empty to download files directly."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}