{
  "openapi": "3.0.1",
  "info": {
    "title": "Propwire Scraper — US Property & Owner Data",
    "description": "[💰 $0.75 / 1K] Extract US property and owner data from Propwire.com: owner names and mailing addresses, equity and value estimates, mortgages, transfers, foreclosure notices and MLS status. 107 fields, 38 verified filters, 24 off-market lead types. Export to JSON, CSV or Excel.",
    "version": "1.0",
    "x-build-id": "PrPf3HUIORwaHJMJ0"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/solidcode~propwire-com-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-solidcode-propwire-com-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/solidcode~propwire-com-scraper/runs": {
      "post": {
        "operationId": "runs-sync-solidcode-propwire-com-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/solidcode~propwire-com-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-solidcode-propwire-com-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": {
          "searchUrls": {
            "title": "Search URLs",
            "type": "array",
            "description": "Paste Propwire URLs copied straight from your browser. A search link -- propwire.com/search?filters=... -- is read for the area and filters you set on the site and re-run here, so everything the Propwire search bar can express comes across, including several lead types or property types at once, which the drop-downs below only take one of. A property link -- propwire.com/realestate/<address>/<id> -- pulls just that one property, with exactly the same fields as a search result. Anything else on propwire.com is rejected before the run starts rather than quietly returning the wrong area. When this box has any URL in it, the filters below are ignored.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "state": {
            "title": "State",
            "enum": [
              "",
              "AL",
              "AK",
              "AZ",
              "AR",
              "CA",
              "CO",
              "CT",
              "DE",
              "DC",
              "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"
            ],
            "type": "string",
            "description": "The US state to search. Required unless you use a ZIP code or a map point below. Leaving it on \"Any state\" together with an empty city, county and ZIP code is refused before any request is made - an unbounded search would return the whole 131-million-record national database.",
            "default": "CA"
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "One city inside the state above, spelled the way Propwire spells it (\"Los Angeles\", \"Fort Worth\"). Capitalisation does not matter. Leave empty to search the whole state."
          },
          "county": {
            "title": "County",
            "type": "string",
            "description": "One county inside the state above, without the word \"County\" - \"Orange\", \"Cook\", \"Harris\". Use this instead of a city to cover a whole metro area."
          },
          "zipCode": {
            "title": "ZIP code",
            "type": "string",
            "description": "A single 5-digit ZIP code. A ZIP code works on its own - you do not need to set the state - and it wins over the city and county above when you set both. ZIP codes are the most reliable way to cover a big city without running into the 10,000-result-per-search limit."
          },
          "latitude": {
            "title": "Map point - latitude",
            "minimum": -90,
            "maximum": 90,
            "type": "number",
            "description": "Search a circle around a point on the map instead of an area. Set latitude, longitude and radius together. When all three are set they replace the state, city, county and ZIP code above entirely."
          },
          "longitude": {
            "title": "Map point - longitude",
            "minimum": -180,
            "maximum": 180,
            "type": "number",
            "description": "The longitude of the map point. Negative in the United States."
          },
          "radiusMiles": {
            "title": "Map point - radius in miles",
            "minimum": 0.1,
            "maximum": 100,
            "type": "number",
            "description": "How far around the map point to search, in miles. Required when you set a latitude and longitude. A 1-mile circle around downtown Los Angeles matches about 9,000 properties, a 5-mile circle about 162,000."
          },
          "leadType": {
            "title": "Lead type",
            "enum": [
              "",
              "absentee_owner",
              "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",
              "vacant_home",
              "vacant_lot",
              "zombie_property"
            ],
            "type": "string",
            "description": "One of Propwire's lead categories. Each one is a signal that the owner may be willing to sell below market. Five further categories (bankruptcies, code violations, divorce, liens and tax liens) are behind Propwire's paid Premium Leads add-on and are not available to this actor.",
            "default": ""
          },
          "ownerType": {
            "title": "Owner type",
            "enum": [
              "",
              "individual",
              "company",
              "bank"
            ],
            "type": "string",
            "description": "Who holds the title.",
            "default": ""
          },
          "ownerOccupancy": {
            "title": "Does the owner live there?",
            "enum": [
              "",
              "owner_occupied",
              "absentee"
            ],
            "type": "string",
            "description": "Absentee owners are the classic investor lead: they are landlords or inheritors rather than residents.",
            "default": ""
          },
          "occupancyStatus": {
            "title": "Is anyone living there?",
            "enum": [
              "",
              "vacant",
              "occupied"
            ],
            "type": "string",
            "description": "A vacant property costs its owner money every month in taxes, insurance and upkeep, which is why vacancy is one of the strongest motivation signals.",
            "default": ""
          },
          "cashBuyerOnly": {
            "title": "Cash buyers only",
            "type": "boolean",
            "description": "Only properties bought outright without a mortgage. These owners are usually investors who buy again.",
            "default": false
          },
          "yearsOwnedMin": {
            "title": "Owned for at least (years)",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "How long the current owner has held the property. 10+ years is the usual tired-landlord threshold; 20+ years is the usual empty-nester threshold."
          },
          "propertiesOwnedMin": {
            "title": "Owner holds at least this many properties",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Find portfolio owners. Set to 5 or more to reach landlords and small funds rather than single-home owners."
          },
          "taxDelinquentSinceYear": {
            "title": "Behind on property taxes since (year)",
            "minimum": 1900,
            "maximum": 2100,
            "type": "integer",
            "description": "Only properties with unpaid property taxes going back to this year or later. Unpaid taxes are a public, dated distress signal."
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "",
              "sfr",
              "condo",
              "mfh_2_to_4",
              "mfh_5_plus",
              "mobile",
              "land",
              "commercial",
              "other"
            ],
            "type": "string",
            "description": "Propwire's own eight property categories.",
            "default": ""
          },
          "bedroomsMin": {
            "title": "Bedrooms (minimum)",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Only properties with at least this many bedrooms."
          },
          "bathroomsMin": {
            "title": "Bathrooms (minimum)",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Only properties with at least this many bathrooms."
          },
          "buildingSqftMin": {
            "title": "Building size (minimum square feet)",
            "minimum": 0,
            "maximum": 5000000,
            "type": "integer",
            "description": "Only properties whose building is at least this many square feet."
          },
          "lotSqftMin": {
            "title": "Lot size (minimum square feet)",
            "minimum": 0,
            "maximum": 500000000,
            "type": "integer",
            "description": "Only properties whose lot is at least this many square feet. One acre is 43,560 square feet."
          },
          "yearBuiltMin": {
            "title": "Built in or after (year)",
            "minimum": 1600,
            "maximum": 2100,
            "type": "integer",
            "description": "Only properties built in this year or later. Leave empty for any age."
          },
          "mustHavePool": {
            "title": "Must have a pool",
            "type": "boolean",
            "description": "Only properties Propwire records as having a swimming pool.",
            "default": false
          },
          "estimatedValueMin": {
            "title": "Estimated value - minimum ($)",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Propwire's own estimate of what the property is worth today."
          },
          "estimatedValueMax": {
            "title": "Estimated value - maximum ($)",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Upper end of the estimated-value band. Set it with the minimum above to search a price range."
          },
          "estimatedEquityMin": {
            "title": "Estimated equity - minimum ($)",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "How much of the property's value the owner actually owns, in dollars."
          },
          "estimatedEquityPercentMin": {
            "title": "Estimated equity - minimum (%)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "The same thing as a percentage. 60% or more is Propwire's own \"high equity\" threshold."
          },
          "lastSoldPriceMin": {
            "title": "Last sale price - minimum ($)",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "What the current owner paid when they bought it."
          },
          "lastSoldSince": {
            "title": "Last sold on or after",
            "type": "string",
            "description": "A date written as YYYY-MM-DD. Only properties whose most recent recorded sale happened on or after this date - the fastest way to build a recent-buyer or comps list."
          },
          "noticeType": {
            "title": "Foreclosure notice type",
            "enum": [
              "",
              "LIS",
              "NOD",
              "NTS",
              "NOS",
              "REO"
            ],
            "type": "string",
            "description": "Which foreclosure filing the county recorded. Which one applies depends on the state: Lis Pendens and Notice of Foreclosure Sale are used in court-driven states such as Florida, New York, New Jersey and Illinois, while Notice of Default and Notice of Trustee Sale are used in states such as California and Texas. Pick the one your state uses, or leave it on \"Any\".",
            "default": ""
          },
          "auctionDateFrom": {
            "title": "Auction on or after",
            "type": "string",
            "description": "A date written as YYYY-MM-DD. Only properties with a foreclosure auction scheduled on or after this date. Use today's date to get only auctions that have not happened yet."
          },
          "mlsStatus": {
            "title": "Listing status",
            "enum": [
              "",
              "active",
              "pending",
              "sold",
              "failed"
            ],
            "type": "string",
            "description": "Whether the property is on the open market. \"Failed\" listings are owners who tried to sell and could not, which is why they are the most contacted group on Propwire.",
            "default": ""
          },
          "daysOnMarketMin": {
            "title": "Days on market (minimum)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Only listings that have been for sale at least this long. A listing sitting for 90+ days usually means the asking price is wrong and the seller knows it."
          },
          "mlsKeyword": {
            "title": "Listing wording",
            "enum": [
              "",
              "mls_investor_owned",
              "mls_creative_financing",
              "mls_motivated_seller"
            ],
            "type": "string",
            "description": "Searches the agent's own listing copy for one of three groups of phrases Propwire tracks. Only applies to properties that are or were on the MLS.",
            "default": ""
          },
          "sortBy": {
            "title": "Sort results by",
            "enum": [
              "",
              "estimated_value",
              "estimated_equity",
              "estimated_equity_percentage",
              "mls_list_price",
              "mls_list_price_per_sf",
              "days_on_market",
              "last_sold_price"
            ],
            "type": "string",
            "description": "Which number to order the results by.",
            "default": ""
          },
          "sortOrder": {
            "title": "Sort direction",
            "enum": [
              "desc",
              "asc"
            ],
            "type": "string",
            "description": "Only used when you pick something to sort by.",
            "default": "desc"
          },
          "addresses": {
            "title": "Look up specific addresses",
            "type": "array",
            "description": "One street address per line, e.g. 101 Crawfords Corner Rd, Holmdel, NJ 07733. Each address is matched against Propwire's own address index and the matching properties are returned with the same fields as a search result. Propwire often has several parcels behind one street address - use the setting below to choose what happens then.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "addressMatchMode": {
            "title": "When an address matches several properties",
            "enum": [
              "",
              "first",
              "all"
            ],
            "type": "string",
            "description": "Propwire returns up to five candidate parcels for a street address: \"101 Crawfords Corner Rd, Holmdel, NJ 07733\" returns 4 and \"1 Main St\" returns 5. This decides whether you get the top one or all of them.",
            "default": "first"
          },
          "propertyIds": {
            "title": "Look up Propwire property IDs",
            "type": "array",
            "description": "One Propwire property ID per line, e.g. 108859. This is the number at the end of a Propwire property link and the `id` field in this actor's own output, so it is the way to re-pull a saved list or refresh yesterday's results.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum properties per search URL (0 = collect everything each search returns). Propwire.com pages through at most 10,000 properties per search, so use several narrower searches to collect more.",
            "default": 100
          },
          "enrichDetails": {
            "title": "Include full details",
            "type": "boolean",
            "description": "Add 37 extra fields per property. Adds one request per property and is billed at the higher rate.",
            "default": false
          },
          "concurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many requests to run in parallel. Lower this if you see failures.",
            "default": 8
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings for the run. Propwire.com only answers US residential addresses, so this actor ships US residential proxies as the default. Datacenter addresses are turned away before any property data is returned, and a run configured that way finishes with zero results.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}