{
  "openapi": "3.0.1",
  "info": {
    "title": "Propwire.com [From $0.75💰] Leads Scraper",
    "description": "Get comprehensive property data: estimated equity, foreclosure status (auction dates/lenders), mortgage and transfer history, owner portfolios, and tax assessments. Access detailed building specs like SF and year built, plus motivated seller lead types, including pre-foreclosures and high equity.",
    "version": "0.0",
    "x-build-id": "k4DRGonNnbHUedmXE"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~propwire-leads-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-propwire-leads-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/memo23~propwire-leads-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-propwire-leads-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/memo23~propwire-leads-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-propwire-leads-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": {
          "startUrls": {
            "title": "Propwire URLs to scrape",
            "type": "array",
            "description": "Propwire search URLs (`/search?filters=…`) or property detail URLs. **`www.propwire.com`** is rewritten to **`propwire.com`**, and **`/properties?filters=…`** to **`/search?filters=…`** so token extraction works (raw `/properties` often returns 404 to bots). Zip-only `searchType: Z` locations missing `state` get **`state` / `stateName` / `title` filled for Florida** when the 5-digit ZIP matches known FL prefixes; other states need those fields in the URL (copy from the site). Leave every URL empty to build from filters below. **Recommended hard cap:** ≤**10** items in `filters.locations` per URL (larger lists often fail on the Core API).\n\n**What counts as a usable link:** a search (`propwire.com/search?filters=…` with at least one location) or a property (`propwire.com/realestate/…/<number>`). The Propwire homepage, a search page with no filters, or a link from another site is skipped and named in the run's status message; a run with no usable link stops there. To look up a street address, use **Addresses** below rather than a link.\n\n**Empty by default on purpose.** A pre-filled URL here would be submitted by anyone who opens the form without touching it, and a Start URL suppresses the **Search by filters** section — so an untouched form used to run a search nobody asked for. Leave this empty to use the filter section below, or paste a URL copied from propwire.com. Example of the expected shape (the site emits it URL-encoded; paste it exactly as copied):\n\n`https://propwire.com/search?filters={\"locations\":[{\"searchType\":\"T\",\"state\":\"FL\",\"title\":\"Florida, USA\",\"stateName\":\"Florida\"}],\"lead_type\":[\"preforeclosure\"],\"property_type\":[\"commercial\"]}`",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "addresses": {
            "title": "Addresses or APNs",
            "uniqueItems": true,
            "type": "array",
            "description": "Free-text addresses or APN strings, one per line. Example: `101 Crawfords Corner Rd, Holmdel, NJ 07733`. APNs accepted in any format the Propwire search bar accepts (e.g. `31-2-0072-00`). **Leave empty unless you want address mode** — any value here overrides Start URLs and the filter section.",
            "items": {
              "type": "string"
            }
          },
          "addressMatchMode": {
            "title": "Address match mode",
            "enum": [
              "first",
              "all"
            ],
            "type": "string",
            "description": "How to handle addresses where Propwire returns several autocomplete matches (different parcels at the same address). `first` mirrors what tapping the top suggestion does in the UI; `all` scrapes every match so you can dedupe by APN downstream.",
            "default": "first"
          },
          "searchStates": {
            "title": "States",
            "maxItems": 10,
            "uniqueItems": true,
            "type": "array",
            "description": "US state codes. **Required** when Start URLs has no URL. Default `FL` is an example—change or add states. Matches Propwire `locations` with `searchType` **T** (state-wide). **You can select at most 10 states** here — the same Core API limit applies; for wider coverage, run multiple actor jobs or use several Start URLs with smaller state lists.",
            "items": {
              "type": "string",
              "enum": [
                "AK",
                "AL",
                "AR",
                "AZ",
                "CA",
                "CO",
                "CT",
                "DC",
                "DE",
                "FL",
                "GA",
                "HI",
                "IA",
                "ID",
                "IL",
                "IN",
                "KS",
                "KY",
                "LA",
                "MA",
                "MD",
                "ME",
                "MI",
                "MN",
                "MO",
                "MS",
                "MT",
                "NC",
                "ND",
                "NE",
                "NH",
                "NJ",
                "NM",
                "NV",
                "NY",
                "OH",
                "OK",
                "OR",
                "PA",
                "RI",
                "SC",
                "SD",
                "TN",
                "TX",
                "UT",
                "VA",
                "VT",
                "WA",
                "WI",
                "WV",
                "WY"
              ],
              "enumTitles": [
                "Alaska",
                "Alabama",
                "Arkansas",
                "Arizona",
                "California",
                "Colorado",
                "Connecticut",
                "District of Columbia",
                "Delaware",
                "Florida",
                "Georgia",
                "Hawaii",
                "Iowa",
                "Idaho",
                "Illinois",
                "Indiana",
                "Kansas",
                "Kentucky",
                "Louisiana",
                "Massachusetts",
                "Maryland",
                "Maine",
                "Michigan",
                "Minnesota",
                "Missouri",
                "Mississippi",
                "Montana",
                "North Carolina",
                "North Dakota",
                "Nebraska",
                "New Hampshire",
                "New Jersey",
                "New Mexico",
                "Nevada",
                "New York",
                "Ohio",
                "Oklahoma",
                "Oregon",
                "Pennsylvania",
                "Rhode Island",
                "South Carolina",
                "South Dakota",
                "Tennessee",
                "Texas",
                "Utah",
                "Virginia",
                "Vermont",
                "Washington",
                "Wisconsin",
                "West Virginia",
                "Wyoming"
              ]
            },
            "default": [
              "FL"
            ]
          },
          "searchLeadTypes": {
            "title": "Lead types",
            "uniqueItems": true,
            "type": "array",
            "description": "Each selected value is one `lead_type` token. **Selecting several narrows the search:** Propwire returns only properties that match every selected type (AND, not OR), so two types that rarely overlap can return nothing. For either-or, run one search per type.\n\n**Not offered here:** Abandoned Homes, Bankruptcies, Bargain Properties, Cash Flow Rentals, Code Violations, Creative Financing, Desperate Landlords, Divorce, Hidden Gems (MLS), Liens (Misc), Sub-To (MLS), Sub-To (Off Market), Tax Dodgers, Tax Liens, Ultra Liens, Ultra Violations. Propwire serves those only to its Premium members. Asked through this actor it ignores them and returns every property in the area, so a search naming one is refused instead of delivering unrelated rows.",
            "items": {
              "type": "string",
              "enum": [
                "absentee_owner",
                "adjustable_loan",
                "assumable_loan",
                "auction",
                "bank_owned",
                "cash_buyer",
                "empty_nester",
                "flipped_property",
                "free_and_clear",
                "high_equity",
                "intrafamily_transfer",
                "low_equity",
                "mls_active",
                "mls_failed",
                "mls_pending",
                "mls_sold",
                "negative_equity",
                "out_of_state_owner",
                "preprobate",
                "preforeclosure",
                "private_lender",
                "tired_landlord",
                "warm_call_leads",
                "vacant_home",
                "vacant_lot",
                "zombie_property"
              ],
              "enumTitles": [
                "Absentee Owners",
                "Adjustable Loans",
                "Assumable Loans",
                "Auctions",
                "Bank Owned (REOs)",
                "Cash Buyers",
                "Empty Nesters",
                "Flipped Properties",
                "Free & Clear",
                "High Equity",
                "Intrafamily Transfers",
                "Low Equity",
                "MLS Active",
                "MLS Failed",
                "MLS Pending",
                "MLS Sold",
                "Negative Equity",
                "Out-of-State Owners",
                "Pre-Probates",
                "Preforeclosures",
                "Private Loans",
                "Tired Landlords",
                "Warm Call Leads",
                "Vacant Homes",
                "Vacant Lots",
                "Zombie Properties"
              ]
            },
            "default": [
              "preforeclosure"
            ]
          },
          "searchPropertyTypes": {
            "title": "Property types",
            "uniqueItems": true,
            "type": "array",
            "description": "Matches Propwire’s Property Types dropdown: each selected value is sent as one entry in `property_type`. If a type fails to filter, copy a Start URL from the site and compare `filters` JSON — API tokens can change.",
            "items": {
              "type": "string",
              "enum": [
                "sfr",
                "condo",
                "mfh_2_to_4",
                "mfh_5_plus",
                "mobile",
                "land",
                "commercial",
                "other"
              ],
              "enumTitles": [
                "Single-Family Homes",
                "Condos/Townhouses",
                "Multi-Family (2-4)",
                "Multi-Family (5+)",
                "Mobile Homes",
                "Land",
                "Commercial",
                "Other"
              ]
            },
            "default": [
              "commercial",
              "mfh_5_plus"
            ]
          },
          "searchEstimatedValueMin": {
            "title": "Estimated value — minimum ($)",
            "type": "integer",
            "description": "Maps to `estimated_value.min`. Default **3000000** is an example minimum ($3M); clear the field in the console if you do not want a floor.",
            "default": 3000000
          },
          "searchEstimatedValueMax": {
            "title": "Estimated value — maximum ($)",
            "type": "integer",
            "description": "Maps to `estimated_value.max`. Leave empty unless you need a ceiling (optional)."
          },
          "monitoringMode": {
            "title": "Only new or changed properties",
            "type": "boolean",
            "description": "Remembers what each search link (and your address list) returned before, in a key-value store in your own account, and returns only properties that are **new** to it or have **changed**: lead types (became pre-foreclosure, vacant, auction…), listing status or list price, a sale, a new transfer or mortgage, foreclosure details, owner type, or an estimated value that moved by 10% or more. Each row then carries `changeType` (`NEW` or `CHANGED`), `changedFields` and `previousValues`. The first run returns everything as `NEW`. A run with nothing new ends with 0 results and says so. `maxItems` counts only the rows returned. A `MONITOR_SUMMARY` record in the run's key-value store has the counts.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Optional. Keeps a separate history under this name, for example one per client or per saved task. Use a new name to start over and get everything as `NEW` again. Leave empty to use one shared history (store `propwire-monitor`)."
          },
          "maxItems": {
            "title": "Max Listings",
            "minimum": 0,
            "type": "integer",
            "description": "Most properties to return in one run, across all links and addresses together. **0 means no limit from this field.** The run then stops at whichever comes first: the run's maximum cost, the free plan's 10 per run, or Propwire's own ceiling of 9,999 properties per search link. A search with more than that has to be split into smaller ones (by county, city or ZIP, or by value range).",
            "default": 10000
          },
          "maxConcurrency": {
            "title": "Max Concurrency",
            "type": "integer",
            "description": "Maximum number of pages that can be processed at the same time.",
            "default": 100
          },
          "minConcurrency": {
            "title": "Min Concurrency",
            "type": "integer",
            "description": "Minimum number of pages that will be processed at the same time.",
            "default": 1
          },
          "maxRequestRetries": {
            "title": "Max Request Retries",
            "type": "integer",
            "description": "Number of times the crawler will retry a failed request before giving up.",
            "default": 100
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Specifies proxy servers that will be used by the scraper in order to hide its origin.<br><br>For details, see <a href='https://apify.com/apify/web-scraper#proxy-configuration' target='_blank' rel='noopener'>Proxy configuration</a> in README.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "enrichEmails": {
            "title": "Enrich with contact emails (experimental, billed per email)",
            "type": "boolean",
            "description": "If enabled, finds a contact email for each result from its own website (or by discovering it from the name). Adds contactEmail + contactWebsite columns plus a detailed emailEnrichment object. Billed per contact email found; only charged when an email is returned, never for misses.",
            "default": false
          },
          "marketAnalysis": {
            "title": "🧠 AI Market Analysis per area ($0.15/area, cached)",
            "type": "boolean",
            "description": "If enabled, appends a `rowType: \"marketAnalysis\"` row per area found in your results (up to 8 areas per run, largest first). Billed per area row delivered via the `market-analysis` event; never charged when analysis fails or signal is too thin.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}