{
  "openapi": "3.0.1",
  "info": {
    "title": "Propwire Scraper - Property Leads, Owners & Equity Data",
    "description": "Scrape Propwire.com: 157M+ US MLS & off-market properties with owner names, mailing addresses, equity, foreclosure and auction details, mortgages, transfers, owner portfolios, tax and full MLS records. Filter by lead type, property type, value, year built, sale date and MLS status.",
    "version": "0.1",
    "x-build-id": "YtwXeRt8TpQ33GWLD"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~propwire-property-leads-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-propwire-property-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/abotapi~propwire-property-leads-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-propwire-property-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/abotapi~propwire-property-leads-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-propwire-property-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": {
          "addresses": {
            "title": "Addresses or APNs (address lookup mode)",
            "type": "array",
            "description": "Free-text street addresses or APN parcel numbers, one per line, e.g. 101 Crawfords Corner Rd, Holmdel, NJ 07733. Each is resolved through the site's own lookup and returns that property's full record. Leave empty unless you want address mode - any value here takes priority over links and the search filters below.",
            "items": {
              "type": "string"
            }
          },
          "addressMatchMode": {
            "title": "When several properties match one address",
            "enum": [
              "first",
              "all"
            ],
            "type": "string",
            "description": "How to handle addresses where the lookup returns several parcel matches (for example condos at one street address). First takes the top suggestion, exactly like clicking it on the site; all returns every match so you can deduplicate by APN afterwards.",
            "default": "first"
          },
          "startUrls": {
            "title": "Links (links mode)",
            "type": "array",
            "description": "Search links (https://propwire.com/search?filters=...) and property links (https://propwire.com/realestate/.../property-details) copied from propwire.com. A search link is walked forward page by page; a property link returns that one full record. The example link below is a live property - run it as-is for a one-record demo, replace it with your own links, or clear the field completely to use the address lookup above or the search filters below (links take priority over the filter section).",
            "items": {
              "type": "string"
            }
          },
          "searchStates": {
            "title": "States",
            "type": "array",
            "description": "US state codes to sweep state-wide, e.g. FL. Used only when addresses and links are empty. Keep the total geography small: the site itself answers at most 10 states per search, and very large sweeps stop serving results after the first 10,000 rows - split wide campaigns into several runs.",
            "items": {
              "type": "string",
              "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"
              ]
            },
            "default": [
              "FL"
            ]
          },
          "searchLocations": {
            "title": "Cities, ZIPs or counties (optional)",
            "type": "array",
            "description": "Narrow the states above to specific places, one per line - city names (Orlando, FL), ZIP codes (32801) or counties (Orange County, FL). Each is resolved through the site's own location lookup; anything it cannot resolve is reported and skipped. Combined with the states field or usable on its own.",
            "items": {
              "type": "string"
            }
          },
          "searchLeadTypes": {
            "title": "Lead types",
            "type": "array",
            "description": "Only return properties carrying these motivated-seller flags. Values marked premium on the site may require a Propwire account and can come back empty.",
            "items": {
              "type": "string",
              "enum": [
                "abandoned_homes",
                "absentee_owner",
                "adjustable_loan",
                "assumable_loan",
                "auction",
                "bank_owned",
                "bankruptcy",
                "bargain_properties",
                "cash_buyer",
                "cash_flow_rentals",
                "code_violation",
                "creative_financing",
                "desperate_landlords",
                "divorce",
                "empty_nester",
                "flipped_property",
                "free_and_clear",
                "hidden_gems_mls",
                "high_equity",
                "intrafamily_transfer",
                "lien_misc",
                "lien_tax",
                "low_equity",
                "mls_active",
                "mls_failed",
                "mls_pending",
                "mls_sold",
                "negative_equity",
                "out_of_state_owner",
                "preprobate",
                "preforeclosure",
                "private_lender",
                "sub_to_mls",
                "sub_to_off_market",
                "tax_dodgers",
                "tired_landlord",
                "ultra_liens",
                "ultra_violations",
                "vacant_home",
                "vacant_lot",
                "zombie_property"
              ],
              "enumTitles": [
                "Abandoned Homes",
                "Absentee Owners",
                "Adjustable Loans",
                "Assumable Loans",
                "Auctions",
                "Bank Owned (REOs)",
                "Bankruptcies",
                "Bargain Properties",
                "Cash Buyers",
                "Cash Flow Rentals",
                "Code Violations",
                "Creative Financing",
                "Desperate Landlords",
                "Divorce",
                "Empty Nesters",
                "Flipped Properties",
                "Free & Clear",
                "Hidden Gems (MLS)",
                "High Equity",
                "Intrafamily Transfers",
                "Liens (Misc)",
                "Tax Liens",
                "Low Equity",
                "MLS Active",
                "MLS Failed",
                "MLS Pending",
                "MLS Sold",
                "Negative Equity",
                "Out-of-State Owners",
                "Pre-Probates",
                "Preforeclosures",
                "Private Loans",
                "Sub-To (MLS)",
                "Sub-To (Off Market)",
                "Tax Dodgers",
                "Tired Landlords",
                "Ultra Liens",
                "Ultra Violations",
                "Vacant Homes",
                "Vacant Lots",
                "Zombie Properties"
              ]
            }
          },
          "searchPropertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Restrict the sweep to these property types.",
            "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"
              ]
            }
          },
          "searchEstimatedValueMin": {
            "title": "Min estimated value ($)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return properties estimated to be worth at least this much. Leave empty for no floor."
          },
          "searchEstimatedValueMax": {
            "title": "Max estimated value ($)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return properties estimated to be worth at most this much. Leave empty for no ceiling."
          },
          "searchYearBuiltMin": {
            "title": "Year built from",
            "minimum": 1800,
            "maximum": 2100,
            "type": "integer",
            "description": "Only return properties built in or after this year. Leave empty for no limit."
          },
          "searchYearBuiltMax": {
            "title": "Year built to",
            "minimum": 1800,
            "maximum": 2100,
            "type": "integer",
            "description": "Only return properties built in or before this year. Leave empty for no limit."
          },
          "searchSoldSince": {
            "title": "Last sold on or after",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Only return properties last sold on or after this date, in YYYY-MM-DD form. Leave empty for no limit."
          },
          "searchOwnerType": {
            "title": "Owner type",
            "type": "array",
            "description": "Only return properties owned by individuals or by companies/llcs/trusts. Leave empty for both.",
            "items": {
              "type": "string",
              "enum": [
                "individual",
                "company"
              ],
              "enumTitles": [
                "Individual",
                "Company / LLC / Trust"
              ]
            }
          },
          "searchMlsStatus": {
            "title": "MLS status",
            "enum": [
              "active",
              "pending",
              "sold",
              "failed"
            ],
            "type": "string",
            "description": "Only return properties currently in this MLS state. Leave empty for all statuses."
          },
          "fetchDetails": {
            "title": "Full property records",
            "type": "boolean",
            "description": "Read each property's full record: owner names and mailing address, ownership length, owner portfolio, foreclosure and auction details, mortgage and transfer history, tax assessments, parcel/zoning, building specifications and the full MLS record when one exists. On by default - without it, records carry only the search-card fields (address, value, equity, beds/baths, size and MLS snapshot).",
            "default": true
          },
          "maxItems": {
            "title": "Max records",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many property records across the whole run (0 = no limit; the walk then ends when the source runs out). This is the limit that stops a run.",
            "default": 0
          },
          "maxPages": {
            "title": "Max pages per search",
            "minimum": 0,
            "type": "integer",
            "description": "Runaway guard: an upper bound on how many result pages any single search walk may read. Leave 0 to go as deep as the source serves, with the record cap above as the only real limit.",
            "default": 0
          },
          "resumeFromRunId": {
            "title": "Continue a previous run",
            "type": "string",
            "description": "Paste the run id (or dataset id) of an earlier run of this Actor to continue it. Records that run already returned are skipped, so an interrupted large collection can finish without paying for the same rows twice. Leave empty for a normal run."
          },
          "incrementalMode": {
            "title": "Recurring updates (only return what changed)",
            "type": "boolean",
            "description": "Turn this on for daily or weekly lead monitoring. The first run returns everything as NEW. Later runs return only NEW, UPDATED and REAPPEARED records, each labelled in a changeType column - price and equity moves count as UPDATED, and a lead that left the result set can be reported as EXPIRED. Leave off for a normal one-off run.",
            "default": false
          },
          "stateKey": {
            "title": "State key (optional, recurring updates only)",
            "type": "string",
            "description": "Optional. Name this monitoring campaign to keep its memory stable, or to deliberately share one memory across differently configured runs. Leave empty and the memory is keyed on the run setup automatically."
          },
          "emitUnchanged": {
            "title": "Also return unchanged records (recurring updates only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return records that have not changed since the last run, labelled UNCHANGED. This returns, and bills, rows you already have.",
            "default": false
          },
          "emitExpired": {
            "title": "Also return records that are gone (recurring updates only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return records that were present in the previous run's result set and are no longer found, labelled EXPIRED. Only produced when a run covered its whole setup, so a capped or continued run never reports records as gone. This returns, and bills, extra rows.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Connection used for every request. The site's protection refuses ordinary datacenter connections, so the default requests the premium residential connection tier; it needs a paid plan that includes that tier. You can also paste your own connection links.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}