{
  "openapi": "3.0.1",
  "info": {
    "title": "Linktree Email Scraper",
    "description": "Linktree email scraper returns, for every email found on Linktree: email address, provider type, business-or-free flag, mailbox name, role-account flag, deliverability check, disposable flag, company name, domain, country, language, page title, source URL and date found",
    "version": "2.0",
    "x-build-id": "dmmIn4oveqkErwuYD"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/premiumscraper~linktree-email-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-premiumscraper-linktree-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/premiumscraper~linktree-email-scraper/runs": {
      "post": {
        "operationId": "runs-sync-premiumscraper-linktree-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/premiumscraper~linktree-email-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-premiumscraper-linktree-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",
        "required": [
          "keywords"
        ],
        "properties": {
          "keywords": {
            "title": "Keywords (what business are you looking for?)",
            "minItems": 1,
            "type": "array",
            "description": "Type the creator's niche the way their bio says it - podcast host, nail tech, dj bookings. Brand and handle names work too. One line per keyword. Related keywords are searched automatically, so keep each line short. Examples: podcast host, nail tech, dj bookings, clothing brand. TIP: give SEVERAL keywords, one per line - each one finds a different set of companies, so three keywords return far more contacts than one.",
            "items": {
              "type": "string"
            }
          },
          "searchCountry": {
            "title": "🌍 Target country (optional)",
            "enum": [
              "Afghanistan (+93)",
              "Albania (+355)",
              "Algeria (+213)",
              "Andorra (+376)",
              "Angola (+244)",
              "Antigua And Barbuda (+1-268)",
              "Argentina (+54)",
              "Armenia (+374)",
              "Australia (+61)",
              "Austria (+43)",
              "Azerbaijan (+994)",
              "Bahamas (+1-242)",
              "Bahrain (+973)",
              "Bangladesh (+880)",
              "Belarus (+375)",
              "Belgium (+32)",
              "Belize (+501)",
              "Benin (+229)",
              "Bhutan (+975)",
              "Bolivia (+591)",
              "Bosnia And Herzegovina (+387)",
              "Botswana (+267)",
              "Brazil (+55)",
              "Brunei (+673)",
              "Bulgaria (+359)",
              "Burkina Faso (+226)",
              "Burundi (+257)",
              "Cambodia (+855)",
              "Cameroon (+237)",
              "Canada (+1)",
              "Cape Verde (+238)",
              "Central African Republic (+236)",
              "Chad (+235)",
              "Chile (+56)",
              "China (+86)",
              "Colombia (+57)",
              "Costa Rica (+506)",
              "Croatia (+385)",
              "Cuba (+53)",
              "Cyprus (+357)",
              "Czech Republic (+420)",
              "Denmark (+45)",
              "Djibouti (+253)",
              "Dominica (+1-767)",
              "Dominican Republic (+1-809)",
              "East Timor (+670)",
              "Ecuador (+593)",
              "Egypt (+20)",
              "El Salvador (+503)",
              "Estonia (+372)",
              "Ethiopia (+251)",
              "Fiji (+679)",
              "Finland (+358)",
              "France (+33)",
              "Gabon (+241)",
              "Gambia (+220)",
              "Georgia (+995)",
              "Germany (+49)",
              "Ghana (+233)",
              "Greece (+30)",
              "Guatemala (+502)",
              "Guyana (+592)",
              "Haiti (+509)",
              "Honduras (+504)",
              "Hungary (+36)",
              "Iceland (+354)",
              "India (+91)",
              "Indonesia (+62)",
              "Iraq (+964)",
              "Ireland (+353)",
              "Israel (+972)",
              "Italy (+39)",
              "Jamaica (+1-876)",
              "Japan (+81)",
              "Jordan (+962)",
              "Kazakhstan (+7)",
              "Kenya (+254)",
              "Kiribati (+686)",
              "Korea, South (+82)",
              "Kuwait (+965)",
              "Kyrgyzstan (+996)",
              "Laos (+856)",
              "Latvia (+371)",
              "Lebanon (+961)",
              "Lesotho (+266)",
              "Libya (+218)",
              "Liechtenstein (+423)",
              "Lithuania (+370)",
              "Luxembourg (+352)",
              "Madagascar (+261)",
              "Malawi (+265)",
              "Malaysia (+60)",
              "Maldives (+960)",
              "Mali (+223)",
              "Malta (+356)",
              "Mauritius (+230)",
              "Mexico (+52)",
              "Micronesia (+691)",
              "Moldova (+373)",
              "Mongolia (+976)",
              "Montenegro (+382)",
              "Morocco (+212)",
              "Mozambique (+258)",
              "Myanmar (+95)",
              "Namibia (+264)",
              "Nauru (+674)",
              "Nepal (+977)",
              "Netherlands (+31)",
              "New Zealand (+64)",
              "Nicaragua (+505)",
              "Niger (+227)",
              "Nigeria (+234)",
              "North Macedonia (+389)",
              "Norway (+47)",
              "Oman (+968)",
              "Pakistan (+92)",
              "Panama (+507)",
              "Papua New Guinea (+675)",
              "Paraguay (+595)",
              "Peru (+51)",
              "Philippines (+63)",
              "Poland (+48)",
              "Portugal (+351)",
              "Qatar (+974)",
              "Romania (+40)",
              "Russia (+7)",
              "Rwanda (+250)",
              "Saint Vincent And The Grenadines (+1-784)",
              "Samoa (+685)",
              "San Marino (+378)",
              "Sao Tome And Principe (+239)",
              "Saudi Arabia (+966)",
              "Senegal (+221)",
              "Serbia (+381)",
              "Seychelles (+248)",
              "Sierra Leone (+232)",
              "Singapore (+65)",
              "Slovakia (+421)",
              "Slovenia (+386)",
              "Solomon Islands (+677)",
              "Somalia (+252)",
              "South Africa (+27)",
              "Spain (+34)",
              "Sri Lanka (+94)",
              "Suriname (+597)",
              "Sweden (+46)",
              "Switzerland (+41)",
              "Taiwan (+886)",
              "Tajikistan (+992)",
              "Tanzania (+255)",
              "Thailand (+66)",
              "Togo (+228)",
              "Tonga (+676)",
              "Trinidad And Tobago (+1-868)",
              "Tunisia (+216)",
              "Turkey (+90)",
              "Turkmenistan (+993)",
              "Uganda (+256)",
              "Ukraine (+380)",
              "United Arab Emirates (+971)",
              "United Kingdom (+44)",
              "United States (+1)",
              "Uruguay (+598)",
              "Uzbekistan (+998)",
              "Vanuatu (+678)",
              "Venezuela (+58)",
              "Vietnam (+84)",
              "Zambia (+260)",
              "Zimbabwe (+263)"
            ],
            "type": "string",
            "description": "Aims the run at one country. It is OPTIONAL and it is not precise. ⚠️ THIS IS NOT A COUNTRY FILTER. An email address carries no country - nothing in \"info@acme.com\" says where the business is - so no setting can verify one. Choosing a country improves the CHANCE that the addresses come from there. It does not promise it, and on its own the chance is low. ✅ FOR A REAL CHANCE, fill in the Location box below with a town, city or postcode in that country. That goes into the search itself, so pages have to mention it - far stronger than this dropdown alone, though still not a guarantee. Every row tells you what was actually found: the place and country the page itself named, and whether they matched what you asked for. Leave it on United States to search the widest, most general index.",
            "default": "United States (+1)"
          },
          "locations": {
            "title": "Location (one only)",
            "type": "string",
            "description": "One town, city, area or postcode. Leave empty to search everywhere. SPELLING MATTERS: the location is searched exactly as written, so a misspelt place returns nothing at all rather than fewer results - there is no place list behind this box, so nothing will correct it for you. Use the spelling local businesses use on their own pages. ⚠️ ONE PLACE OR ONE POSTCODE — NEVER BOTH. This box is searched exactly as you type it, as a single phrase. \"Dhaka 1207\" is not searched as \"Dhaka\" and as \"1207\"; it is searched as the words \"Dhaka 1207\", and almost no page prints a town beside its postcode, so you will get very little. To cover both, run the actor twice — the town on one run, the postcode on the other. ⚠️ CHECK THE SPELLING, and check the postcode. It goes into the search exactly as written, so a misspelt place does not return fewer results — it returns none. Use the spelling local businesses use on their own pages. ✅ THIS IS THE STRONGEST WAY TO TARGET A COUNTRY. What you type here is combined with the contact words in the search, so pages must mention it. That gives a HIGH chance the addresses belong to that area — but still not a guarantee, because an email address itself carries no location and a page can name a town it is not in.",
            "default": ""
          },
          "emailProviders": {
            "title": "Which kinds of email to keep",
            "enum": [
              "both",
              "b2b",
              "b2c"
            ],
            "type": "string",
            "description": "B2B searches for company mailboxes such as info@, sales@ and office@. B2C searches for free-provider addresses such as Gmail, Yahoo and Outlook. Both searches for everything and keeps whatever it finds. IGNORED if you fill in 'Only these email providers' below - naming a provider is the more specific instruction and the two cannot both apply.",
            "default": "both"
          },
          "emailProviderDomains": {
            "title": "Only these email providers (optional)",
            "type": "array",
            "description": "Leave empty unless you want ONE provider. Type @gmail, @yahoo, @outlook - one per line. The whole family is searched, so @yahoo also finds yahoo.co.uk, yahoo.fr and the rest. IMPORTANT: filling this IGNORES the 'Which kinds of email to keep' setting above, and role mailboxes (info@, sales@) are not searched, because those find company domains - the opposite of what you asked for.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "How many emails per keyword?",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many to collect FOR EACH KEYWORD you typed - not for the whole run. Two keywords at 20 gives you up to 40. Start small to see what a site returns, then raise it. TO GET MORE, ADD MORE KEYWORDS - vary them (plumber, emergency plumber, boiler repair). Each one reaches a different set of companies, so three keywords at 50 beats one keyword at 150.",
            "default": 20
          },
          "dateRange": {
            "title": "Only pages published in",
            "enum": [
              "any",
              "hour",
              "day",
              "week",
              "month",
              "year",
              "custom"
            ],
            "type": "string",
            "description": "How recent the page must be. Choose \"Custom range\" to use the two date boxes below.",
            "default": "any"
          },
          "checkMxRecord": {
            "title": "💲 Check the domain can receive email (MX lookup)",
            "type": "boolean",
            "description": "COSTS EXTRA — only on a row it actually verified. Checks each address's domain can actually receive mail before the row is delivered, and drops the ones that cannot. Off by default because it REDUCES the number of rows you get - that is the point, the ones it removes are dead. Charging: the base price per contact does not change. A small extra is ADDED only on a row where the check actually ran and confirmed the domain. If the lookup cannot complete, nothing extra is charged for that row. The base price per contact does not change; a small extra is ADDED to that row only. Nothing extra is charged when the check cannot run, and turning the switch on costs nothing by itself. Adds a quick per-domain check. It is what stops dead addresses reaching your export, and it costs a little time on a large run - leave it on unless you are in a hurry and will verify elsewhere.",
            "default": false
          },
          "visitPages": {
            "title": "Open the result pages to find more addresses",
            "type": "boolean",
            "description": "A search description is only about 160 characters. Opening the page itself finds mailto: links, hidden addresses and contact pages — usually 3-5x more emails, at a small extra charge per page and a slower run. **Slowest setting in the actor.** Leaving it off keeps a run to minutes; turning it on opens each result's own pages and can multiply the run time several times over. Worth it only when you need contacts that are not visible in the listing itself.",
            "default": false
          },
          "onlyNewSinceLastRun": {
            "title": "💲 Only give me contacts I have not had before",
            "type": "boolean",
            "description": "COSTS EXTRA — only on a row cross-run memory proved you have not been given before. Remembers every contact from your previous runs in this actor's storage and skips them. Perfect for a daily or weekly schedule: you only ever get new leads. The base price per contact does not change; a small extra is ADDED to that row only. Nothing extra is charged when the check cannot run, and turning the switch on costs nothing by itself.",
            "default": 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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}