{
  "openapi": "3.0.1",
  "info": {
    "title": "Instagram Email Scraper & Phone Finder: Bio, Website, Leads",
    "description": "Instagram profiles to emails and phones, no login: an Instagram email finder and phone number scraper. One lead per profile: the bio email and phone, link in bio, website contact pages, linked TikTok, YouTube, Threads and Telegram bios, category, exact counts, engagement, related profiles.",
    "version": "0.1",
    "x-build-id": "qDcejx0ZMAqG01H48"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/moxlade~instagram-email-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-moxlade-instagram-email-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/moxlade~instagram-email-scraper/runs": {
      "post": {
        "operationId": "runs-sync-moxlade-instagram-email-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/moxlade~instagram-email-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-moxlade-instagram-email-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": {
          "usernames": {
            "title": "Instagram usernames or profile links",
            "type": "array",
            "description": "Instagram profiles, one per line, in any form: `garyvee`, `@garyvee`, `https://www.instagram.com/garyvee/`, or `instagram.com/garyvee?hl=en`. Each gives one row with the bio, the emails and phones written in it, the external link and every bio link, category and account type, exact counts, engagement over the recent posts (up to 12), and the contact finder's results. The same profile given several ways is one row. A numeric user id or a post or reel link is read too: the id's account, or the post's author (`https://www.instagram.com/p/<code>/`). A value that is not an Instagram profile is a free row that says so.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "relatedProfilesPerSeed": {
            "title": "Related profiles per seed",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Also read this many of the related profiles Instagram shows for each profile you give (0-50; Instagram shows up to 50, fewer or none for some accounts). Each related profile is a full row of its own, with `source_kind` `related` and `seed_username` set, charged like any profile. 0 reads none; the related accounts are listed on the seed's row either way.",
            "default": 0
          },
          "findContacts": {
            "title": "Find contacts beyond the bio",
            "type": "boolean",
            "description": "Resolve the link in bio (Linktree, Beacons, lnk.bio and 60+ others), read the website's pages and the linked TikTok, YouTube, Threads and Telegram bios for more emails, phones and WhatsApp numbers. On a creator's or a personal account a bio link is read as its website only when the domain carries the account's name, so a brand's or a platform's contacts are never sold as the profile's. Turn it off to read only the Instagram record (the bio and the captions).",
            "default": true
          },
          "websitePages": {
            "title": "Website page types to read",
            "type": "array",
            "description": "Which of the website's pages the finder reads, beyond the home page. Empty reads all five types. The finder follows the site's own links first and the standard paths second.",
            "items": {
              "type": "string",
              "enum": [
                "contact",
                "about",
                "privacy",
                "terms",
                "imprint"
              ],
              "enumTitles": [
                "Contact",
                "About",
                "Privacy policy",
                "Terms",
                "Imprint / legal"
              ]
            },
            "default": []
          },
          "maxWebsitePages": {
            "title": "Max website pages per profile",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "The most pages the finder reads on one profile's website (the home page counts). Most sites yield their contacts in two or three.",
            "default": 8
          },
          "maxLinkInBioLinks": {
            "title": "Max outbound links from a link-in-bio page",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "When the bio points at a link aggregator (Linktree and the like), how many of its outbound links the finder checks. One whose domain carries the profile's name (its username or full name) is crawled as its website; a shop, a brand or an affiliate link is named in the row's note, never crawled, so a brand's contacts are never sold as the profile's. The aggregator page itself is always read.",
            "default": 3
          },
          "readLinkedNetworks": {
            "title": "Read linked TikTok, YouTube, Threads and Telegram",
            "type": "boolean",
            "description": "When a profile links a TikTok, YouTube, Threads or Telegram account (in the bio, the bio links or the website), read that account's public bio for contacts too, logged out. A network whose page is a login wall is reported, not promised.",
            "default": true
          },
          "refreshWebsites": {
            "title": "Read live (ignore the cache)",
            "type": "boolean",
            "description": "A profile read in the last 30 days is served from our side with its contacts, and website and network results are kept for repeat runs; every row says where its profile and its website contacts came from (`profile_read_from`, `website_read_from`: `live` or `cache`) and when (`profile_read_at`, `website_read_at`). Turn this on to read every profile, website and network live this run.",
            "default": false
          },
          "includeRecentPosts": {
            "title": "Include recent posts",
            "type": "boolean",
            "description": "Add the recent posts to each row, up to 12 (6 on a row whose `record_source` is `graphql`): shortcode, URL, image link, time, likes, comments, video views, pinned flag, caption. The engagement averages are on every row regardless.",
            "default": false
          },
          "includeRaw": {
            "title": "Include the raw Instagram record",
            "type": "boolean",
            "description": "Add Instagram's own profile object to each row (`raw`), without the posts' image and video payloads.",
            "default": false
          },
          "minFollowers": {
            "title": "Minimum followers",
            "minimum": 0,
            "type": "integer",
            "description": "Deliver only profiles with at least this many followers. 0 = no minimum.",
            "default": 0
          },
          "maxFollowers": {
            "title": "Maximum followers",
            "minimum": 0,
            "type": "integer",
            "description": "Deliver only profiles with at most this many followers. 0 = no maximum.",
            "default": 0
          },
          "accountTypes": {
            "title": "Account types to keep",
            "type": "array",
            "description": "Deliver only these account types. Empty keeps all. `business` = a business account, `creator` = a professional non-business account, `personal` = neither. A professional account whose record does not say which (`account_type` `professional`) matches both `business` and `creator`.",
            "items": {
              "type": "string",
              "enum": [
                "business",
                "creator",
                "personal"
              ],
              "enumTitles": [
                "Business",
                "Creator",
                "Personal"
              ]
            },
            "default": []
          },
          "onlyWithContact": {
            "title": "Only profiles with a contact",
            "type": "boolean",
            "description": "Deliver only profiles for which an email, phone or WhatsApp number was found; a profile with none is a free row.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new profiles (monitoring)",
            "type": "boolean",
            "description": "With a saved task and `stateStoreName`, deliver only profiles no earlier run of this memory delivered; a profile skipped this way is a free row. With `relatedProfilesPerSeed`, a skipped seed still gives its new related profiles. To track follower change instead, leave this off and keep `stateStoreName`: every profile is delivered with how its follower count moved since the last read.",
            "default": false
          },
          "stateStoreName": {
            "title": "Monitoring memory name",
            "pattern": "^[A-Za-z0-9._~-]{0,200}$",
            "type": "string",
            "description": "A name for the memory that `onlyNew` and the follower-change columns use, so the same task finds the same memory. Empty derives one from the usernames.",
            "default": ""
          },
          "maxItems": {
            "title": "Max profiles (charged rows)",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many charged profile rows (free rows do not count). 0 = no limit.",
            "default": 0
          },
          "runTag": {
            "title": "Run tag",
            "maxLength": 80,
            "type": "string",
            "description": "A label copied onto every row of this run, for your own grouping. Optional.",
            "default": ""
          },
          "proxyUrl": {
            "title": "Proxy URL",
            "type": "string",
            "description": "Optional. Your own proxy as `scheme://user:pass@host:port`, used in front of the Actor's own exits. Leave empty to use the maintained exits (recommended)."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}