{
  "openapi": "3.0.1",
  "info": {
    "title": "Fifa Email Scraper",
    "description": "FIFA Email Scraper gathers public contact emails linked to FIFA-related community and partner pages by keyword, supporting football industry outreach and sponsorships.",
    "version": "1.0",
    "x-build-id": "sI6pafp1t9MYQNeTb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/email_scraper~fifa-email-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-email_scraper-fifa-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/email_scraper~fifa-email-scraper/runs": {
      "post": {
        "operationId": "runs-sync-email_scraper-fifa-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/email_scraper~fifa-email-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-email_scraper-fifa-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 or Queries",
            "type": "array",
            "description": "A list of keywords or queries to search for.",
            "default": [
              "agent",
              "manager"
            ],
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Region / Location (Simply enter any country or city manually)",
            "type": "string",
            "description": "Optional country, state or city used to narrow the search. Leave it empty to search without a geographic filter.",
            "default": ""
          },
          "locations": {
            "title": "More locations (each one searched separately)",
            "type": "array",
            "description": "Optional extra countries, states or cities, so one run can cover many places, for example: Miami, Austin, Denver. Every location is searched on its own with the same keywords and domains, in addition to the Region / Location field above if that is filled in. Each keyword + location + domain combination gets its own email limit. The searches multiply: 3 keywords × 5 locations × 2 domains = 30 combinations, so pair a long list with the total email limit below. An email found under more than one location is only saved once.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "emailSearchMode": {
            "title": "❤️‍🔥 Which emails to look for",
            "enum": [
              "domainList",
              "anyDomain",
              "businessOnly"
            ],
            "type": "string",
            "description": "Controls how email addresses are matched. 'Only the domains listed' searches for exactly the suffixes you enter in the field below (the original behaviour). 'Any email address' accepts every address found in a profile description, whatever the domain. 'Business emails only' accepts any address except those from free webmail providers (Gmail, Yahoo, Outlook, Hotmail, iCloud, AOL, Proton and similar), which is the better choice for B2B outreach. The two broad modes find emails that a fixed domain list would miss, but expect fewer results per search and some noise, so combine them with 'Verify email domains' and consider adding Exclude words.",
            "default": "anyDomain"
          },
          "customDomains": {
            "title": "E-mail domain suffixes (e.g. @gmail.com, @yahoo.com,@outlook.com)",
            "type": "array",
            "description": "List of custom email domains. Used when 'Which emails to look for' is set to 'Only the domains listed'; ignored in the 'Any email address' and 'Business emails only' modes.",
            "default": [
              "@gmail.com"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxEmails": {
            "title": "Enter Max Emails - per keyword + domain combination",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "How many addresses each search keyword + domain suffix combination may collect before the finder moves on to the next one. This is a per-combination target, not a run-wide total: with 3 keyword and 2 Domains and a limit of 20, the run works through all 6 combinations and aims for up to 20 addresses in each, so up to 120 overall. Lower values finish sooner and cost less; higher values dig deeper but never guarantee a fuller result, since the run can only find what is publicly listed. In the 'Any email address' and 'Business emails only' modes there is no domain to combine with, so the limit applies per keyword.",
            "default": 5
          },
          "maxTotalEmails": {
            "title": "Total email limit for the whole run (0 = no limit)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "A hard stop for the entire run, across every keyword and domain combination. Once this many emails have been collected the run finishes cleanly and keeps everything found so far. Use it to keep pay-per-result costs predictable: for example, 20 keywords with a per-combination limit of 50 could otherwise return up to 1,000 emails. Leave at 0 to rely only on the per-combination limit above.",
            "default": 0
          },
          "maxConcurrentSearches": {
            "title": "Parallel searches (Must Set this option 5 to 10 for super fast scraping)",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Every keyword + location + domain combination is its own search, and the searches do not depend on each other, so the Actor can run several at the same time instead of one after another. Most of a search is spent waiting for Google, so 4 searches at a time finish a long list roughly 3 to 4 times sooner, at the same cost per result. Limits, duplicate removal, filters and the total limit work exactly as before: an email found by two searches at once is still saved only once, and the total limit is never exceeded. What changes is the order: rows arrive as searches finish, and an email that several searches find is credited to whichever found it first. Set 1 to run one search at a time in the original order. Higher numbers finish sooner but send more requests at once, which can slow Google's answers down; 10 is the maximum. It makes no difference when there is only one search.",
            "default": 5
          },
          "minFollowers": {
            "title": "Minimum followers (0 = no minimum)",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Only keep profiles with at least this many followers. Handy for skipping empty or brand-new accounts. When a follower filter is set, results whose follower count Google does not show (and all posts and reels) are skipped, so expect fewer rows than without the filter.",
            "default": 0
          },
          "maxFollowers": {
            "title": "Maximum followers (0 = no maximum)",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Only keep profiles with at most this many followers. Combine with the minimum to target a range, for example 10,000 to 100,000 for micro-influencers. Profiles for which Google shows no follower count are skipped when this filter is set.",
            "default": 0
          },
          "profilesOnly": {
            "title": "Profile pages only (skip posts, reels and tag pages)",
            "type": "boolean",
            "description": "Most Google results for Fifa are not profiles: they are individual posts, reels, explore / tag pages, and they are often job ads or captions rather than a person you can contact. Switch this on to keep only results that point to a profile page (fifa.com/username), so every saved row is one account and nothing else is saved or charged. Recommended for influencer and B2B lead lists. It is ticked by default when you start a run in the Console; API calls and saved tasks keep it off unless you set it, so existing setups behave as before.",
            "default": false
          },
          "includeWords": {
            "title": "Must-include words (bio keywords)",
            "type": "array",
            "description": "Words or phrases that must appear in the profile's title or description snippet. A result is kept only if it contains at least one of them, for example: coach, agency, booking, collab. Matching ignores letter case, and single words only match as whole words. Leave empty to keep every result. This is stricter than the search keywords, which Google matches loosely. If a result contains both an include word and an exclude word, it is skipped.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeWords": {
            "title": "Exclude words",
            "type": "array",
            "description": "Words or phrases you do not want to see, for example: crypto, onlyfans. If any of them appears in a profile's description snippet, that whole snippet is skipped and no email address is taken from it. Matching ignores letter case, and single words only match as whole words. Leave empty to keep every snippet.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "extractPhoneNumbers": {
            "title": "Also extract phone / WhatsApp numbers",
            "type": "boolean",
            "description": "Also pick up phone and WhatsApp numbers that are written in the profile description and return them in a phoneNumbers field next to the email. Off by default because phone numbers are personal data and some number-like text can be misread, so review them before use.",
            "default": false
          },
          "verifyEmails": {
            "title": "Verify email domains before saving",
            "type": "boolean",
            "description": "Checks every address before it is saved: it must be a well-formed address, must not be an obvious placeholder (such as example@gmail.com or yourname@gmail.com), and its domain must have working mail servers (DNS MX lookup). Addresses that fail are dropped, so they are not saved or charged. Saved rows get an emailStatus of 'valid' or 'unverified' (when the DNS lookup could not be completed). This does not confirm that the individual mailbox exists. It is most useful with 'Any email address' and 'Business emails only', where domains vary.",
            "default": false
          },
          "skipPreviouslyFoundEmails": {
            "title": "Skip emails found in earlier runs",
            "type": "boolean",
            "description": "When switched on, the run loads the list of emails saved under the history name below, skips any address already on it, and adds every new address to it. The result is a dataset that contains only new leads. Off by default, so every run starts from scratch.",
            "default": false
          },
          "historyStoreName": {
            "title": "Lead history name",
            "pattern": "^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$",
            "type": "string",
            "description": "Name of the saved history used by 'Skip emails found in earlier runs'. Use the same name across runs to share one history, or a different name for each campaign to keep campaigns separate. Only lowercase letters, numbers and hyphens, 3–63 characters. The history is kept in a named Apify storage that stays in your account until you delete it.",
            "default": "fifa-email-history"
          },
          "excludeEmails": {
            "title": "Emails or domains to skip (do-not-contact / already-have list)",
            "type": "array",
            "description": "Addresses or whole domains that must never appear in the results, for example people who asked not to be contacted, existing customers, or contacts already in your CRM. Enter full addresses (jane@brand.com) or domains (@brand.com). Matching ignores letter case. A skipped address is not saved and not charged.",
            "default": [],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}