{
  "openapi": "3.0.1",
  "info": {
    "title": "FastPeopleSearch — People Search Scraper",
    "description": "Scrape free US people data from FastPeopleSearch — phone numbers, current and past addresses, age, relatives, and associates. Supports name, reverse-phone, and reverse-address searches. Powered by Bright Data Web Unlocker to clear Cloudflare protection.",
    "version": "0.1",
    "x-build-id": "2BHoVgyYdaE7eUgma"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/jungle_synthesizer~fastpeoplesearch-people-search-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-jungle_synthesizer-fastpeoplesearch-people-search-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/jungle_synthesizer~fastpeoplesearch-people-search-scraper/runs": {
      "post": {
        "operationId": "runs-sync-jungle_synthesizer-fastpeoplesearch-people-search-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/jungle_synthesizer~fastpeoplesearch-people-search-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-jungle_synthesizer-fastpeoplesearch-people-search-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": [
          "maxItems"
        ],
        "properties": {
          "sp_intended_usage": {
            "title": "What is the intended usage of this data?",
            "minLength": 1,
            "type": "string",
            "description": "What will this data feed? E.g. lead lists, KYB checks, price tracking."
          },
          "sp_improvement_suggestions": {
            "title": "How can we improve this crawler for you?",
            "minLength": 1,
            "type": "string",
            "description": "Provide any feedback or suggestions for improvements."
          },
          "sp_contact": {
            "title": "Contact email (optional)",
            "minLength": 1,
            "type": "string",
            "description": "We'll personally help with your use case. No spam."
          },
          "resumeCursor": {
            "title": "Resume cursor (continue a previous run)",
            "type": "string",
            "description": "Leave empty for a fresh crawl. To CONTINUE a previous run where it stopped — without paying again for records you already received — paste the `resumeCursor` value from that run's Output (the run's OUTPUT key). Resume promptly: the previous run's data expires with your account's retention window (free tier: your ~10 most recent runs)."
          },
          "searchMode": {
            "title": "Search Mode",
            "enum": [
              "name",
              "phone",
              "address",
              "profileUrl"
            ],
            "type": "string",
            "description": "Search mode: \"name\" (search by first+last name), \"phone\" (reverse phone lookup), \"address\" (reverse address lookup), or \"profileUrl\" (fetch a known direct profile link).",
            "default": "name"
          },
          "firstName": {
            "title": "First Name",
            "type": "string",
            "description": "First name of the person to search for (required for name mode)."
          },
          "lastName": {
            "title": "Last Name",
            "type": "string",
            "description": "Last name of the person to search for. Required for name mode unless a state is given (first name + state searches the whole state)."
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "City to narrow the name or address search (optional for name mode, required for address mode)."
          },
          "state": {
            "title": "State",
            "enum": [
              "AL",
              "AK",
              "AZ",
              "AR",
              "CA",
              "CO",
              "CT",
              "DE",
              "FL",
              "GA",
              "HI",
              "ID",
              "IL",
              "IN",
              "IA",
              "KS",
              "KY",
              "LA",
              "ME",
              "MD",
              "MA",
              "MI",
              "MN",
              "MS",
              "MO",
              "MT",
              "NE",
              "NV",
              "NH",
              "NJ",
              "NM",
              "NY",
              "NC",
              "ND",
              "OH",
              "OK",
              "OR",
              "PA",
              "RI",
              "SC",
              "SD",
              "TN",
              "TX",
              "UT",
              "VT",
              "VA",
              "WA",
              "WV",
              "WI",
              "WY",
              "DC"
            ],
            "type": "string",
            "description": "US state abbreviation (e.g. CA, TX, NY). Narrows name/address searches."
          },
          "zip": {
            "title": "ZIP Code",
            "type": "string",
            "description": "US ZIP code (5 digits). Name search: finds people with that name in and around the ZIP (needs a last name; wins over city/state when both are given). Address search: use it instead of city + state, or together with them to pin the exact ZIP."
          },
          "phone": {
            "title": "Phone Number",
            "type": "string",
            "description": "Phone number to reverse-lookup (required for phone mode). Format: digits only, e.g. 5551234567."
          },
          "address": {
            "title": "Street Address",
            "type": "string",
            "description": "Street address to reverse-lookup (required for address mode), e.g. \"123 Main St\"."
          },
          "maxItems": {
            "title": "Max Items (total for the run)",
            "type": "integer",
            "description": "Maximum number of person records this run returns and is billed for, in total. In batch mode it caps the whole run, not each search — 3 searches with maxItems 2 return 2 records, not 6. Default 10.",
            "default": 10
          },
          "profileUrl": {
            "title": "Profile URL",
            "type": "string",
            "description": "Direct FastPeopleSearch profile link to fetch (required for profileUrl mode), e.g. https://www.fastpeoplesearch.com/john-smith_id_G-..."
          },
          "startUrls": {
            "title": "FastPeopleSearch URLs",
            "type": "array",
            "description": "Optional. Paste FastPeopleSearch pages and get their people: a person profile link (one record), a name-search results page (/name/john-smith_ny), an address results page (/address/...) or a phone page (/555-123-4567). Each URL is its own search, so maxItemsPerSearch applies per URL and maxItems caps the whole run. Other sites' links, and FastPeopleSearch pages that are not one of those four kinds, are rejected with a clear error. The other fields (minAge, maxAge, requirePhone, requireEmail, flattenedOutput) apply to every URL.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "minAge": {
            "title": "Minimum age",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Only return people at least this old. Judged on the results page, so people outside the range are never fetched or billed. A person whose age is not printed is left out when an age bound is set."
          },
          "maxAge": {
            "title": "Maximum age",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Only return people at most this old (see Minimum age). Must not be below Minimum age."
          },
          "requirePhone": {
            "title": "Only people with a phone number",
            "type": "boolean",
            "description": "Optional. Skip profiles that list no phone number. Checked on the profile, so it narrows the people taken from each results page and a run can return fewer than Max Items.",
            "default": false
          },
          "requireEmail": {
            "title": "Only people with an email address",
            "type": "boolean",
            "description": "Optional. Skip profiles that list no email address (see Only people with a phone number).",
            "default": false
          },
          "flattenedOutput": {
            "title": "Spreadsheet columns (phone1..5, email1..5)",
            "type": "boolean",
            "description": "Optional. Also write phone1 to phone5 (with phone1Type to phone5Type) and email1 to email5 as separate columns on every record, next to the full phones / emails lists, for CSV and Excel exports.",
            "default": false
          },
          "searches": {
            "title": "Batch — search several people at once (optional)",
            "type": "array",
            "description": "Optional. A list of searches to run in ONE actor run instead of one run per person. Each entry takes the same fields as a single search (searchMode, firstName, lastName, city, state, zip, phone, address, profileUrl) — searchMode is NOT inherited from the top level (so a batch can mix name/phone/address/profileUrl lookups), every other top-level field is used as a per-entry default. maxItems caps the WHOLE run's total records; set maxItemsPerSearch too if you want a guaranteed share per entry (e.g. 30 entries, maxItems 30, maxItemsPerSearch 1 for one record per person). NOTE: this target is cleared via Bright Data's Web Unlocker on every single fetch, unlike our browser-based actors — there is no shared browser session to reuse, so batching does NOT lower the per-record cost or speed up the clearance step here. It DOES save you from launching N separate runs and guarantees each entry its own share of the budget. Leave empty to run a single search."
          },
          "maxItemsPerSearch": {
            "title": "Max Items per search entry (batch only)",
            "minimum": 1,
            "type": "integer",
            "description": "Optional, and only meaningful with a batch. The most records any ONE search entry may take out of the maxItems budget, so an early entry cannot use it all up and leave later entries with nothing. Leave empty and each entry may use the whole budget. Example: 3 searches with maxItems 3 and maxItemsPerSearch 1 returns one record per search."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}