{
  "openapi": "3.0.1",
  "info": {
    "title": "Facebook Marketplace - Israel Property Rentals & Sales",
    "description": "Scrape Facebook Marketplace property rentals and sales across Israeli cities. No login. Returns listing id, price (ILS), city, title, full description, image, and seller. Coverage comes from sweeping a grid of city coordinates.",
    "version": "1.0",
    "x-build-id": "qtZI1aWBDG9vf0Q9e"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/swerve~fb-marketplace-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-swerve-fb-marketplace-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/swerve~fb-marketplace-scraper/runs": {
      "post": {
        "operationId": "runs-sync-swerve-fb-marketplace-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/swerve~fb-marketplace-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-swerve-fb-marketplace-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": {
          "dealType": {
            "title": "Deal type",
            "enum": [
              "RENT",
              "BUY"
            ],
            "type": "string",
            "description": "RENT scrapes the Property Rentals category; BUY scrapes Property For Sale. Example: RENT.",
            "default": "RENT"
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "Pick one or more cities to scrape. Each city is swept with a small grid of points (see 'Coverage points per city') to get past Facebook's ~24-per-search limit for logged-out users. Israeli cities are shown in Hebrew; international cities in English. Example: תל אביב + ירושלים, or London, UK + Madrid, Spain. Need a spot that isn't listed? Use 'Extra coordinates' under Advanced.",
            "items": {
              "type": "string",
              "enum": [
                "tel-aviv",
                "jerusalem",
                "haifa",
                "rishon-lezion",
                "netanya",
                "beer-sheva",
                "petah-tikva",
                "holon",
                "bat-yam",
                "ramat-gan",
                "ashdod",
                "ashkelon",
                "herzliya",
                "kfar-saba",
                "raanana",
                "rehovot",
                "bnei-brak",
                "hadera",
                "ramat-hasharon",
                "givatayim",
                "hod-hasharon",
                "rosh-haayin",
                "nahariya",
                "eilat",
                "modiin",
                "mevaseret-zion",
                "tzur-hadassah",
                "karmiel",
                "akko",
                "nazareth",
                "nof-hagalil",
                "tiberias",
                "kfar-yona",
                "kiryat-bialik",
                "kiryat-motzkin",
                "kiryat-yam",
                "kiryat-ata",
                "maalot-tarshiha",
                "kfar-vradim",
                "new-york",
                "los-angeles",
                "miami",
                "chicago",
                "san-francisco",
                "london",
                "manchester",
                "madrid",
                "barcelona",
                "berlin",
                "munich",
                "paris",
                "rome",
                "milan",
                "lisbon",
                "toronto"
              ],
              "enumTitles": [
                "תל אביב",
                "ירושלים",
                "חיפה",
                "ראשון לציון",
                "נתניה",
                "באר שבע",
                "פתח תקווה",
                "חולון",
                "בת ים",
                "רמת גן",
                "אשדוד",
                "אשקלון",
                "הרצליה",
                "כפר סבא",
                "רעננה",
                "רחובות",
                "בני ברק",
                "חדרה",
                "רמת השרון",
                "גבעתיים",
                "הוד השרון",
                "ראש העין",
                "נהריה",
                "אילת",
                "מודיעין",
                "מבשרת ציון",
                "צור הדסה",
                "כרמיאל",
                "עכו",
                "נצרת",
                "נוף הגליל",
                "טבריה",
                "כפר יונה",
                "קריית ביאליק",
                "קריית מוצקין",
                "קריית ים",
                "קריית אתא",
                "מעלות תרשיחא",
                "כפר ורדים",
                "New York, USA",
                "Los Angeles, USA",
                "Miami, USA",
                "Chicago, USA",
                "San Francisco, USA",
                "London, UK",
                "Manchester, UK",
                "Madrid, Spain",
                "Barcelona, Spain",
                "Berlin, Germany",
                "Munich, Germany",
                "Paris, France",
                "Rome, Italy",
                "Milan, Italy",
                "Lisbon, Portugal",
                "Toronto, Canada"
              ]
            },
            "default": [
              "tel-aviv"
            ]
          },
          "radiusKm": {
            "title": "Search radius per city (km)",
            "minimum": 1,
            "type": "integer",
            "description": "How far around each city center to search, in kilometers. Larger values pull in nearby suburbs. Example: 12 (default) covers a city and its inner ring; use 20-25 to include the wider metro.",
            "default": 12
          },
          "maxPerCoord": {
            "title": "Max listings per city",
            "minimum": 1,
            "type": "integer",
            "description": "Stop collecting cards from a single city after this many. Facebook serves at most ~24 to logged-out users per search, so values above ~24 just take whatever is available. Example: 40. No upper cap.",
            "default": 40
          },
          "matchCityOnly": {
            "title": "Only the cities I picked",
            "type": "boolean",
            "description": "Facebook's search returns a radius around each city, so it also pulls in neighbouring towns (e.g. picking Ra'anana also surfaces Kfar Saba, Herzliya). When on (default), listings that aren't actually in one of your selected cities are dropped BEFORE the detail step, so you don't pay for results you didn't ask for. Turn off to include the whole surrounding area.",
            "default": true
          },
          "cityCoveragePoints": {
            "title": "Coverage points per city",
            "minimum": 1,
            "type": "integer",
            "description": "How many search points to sweep across each city. Facebook returns only ~24 listings per point to logged-out users, so 1 point misses most of a city; more points find more (Ra'anana: 1 point found ~2 listings, 5 points found 21). Higher = more complete but proportionally more cost/time. Example: 5.",
            "default": 5
          },
          "fetchDetails": {
            "title": "Fetch full description per listing (slower)",
            "type": "boolean",
            "description": "When on, opens each listing's detail page to read the FULL description (og:description), title, and image. This is the key field for downstream matching. Turning it off is much faster but returns only the card-level data (price, city, short title, thumbnail) and an empty description. Example: leave on.",
            "default": true
          },
          "extraCoords": {
            "title": "Extra coordinates (advanced)",
            "type": "array",
            "description": "Search arbitrary points that are not in the city dropdown. Each entry is { label, lat, lng, radiusKm, countryCode, currency }. lat/lng set the Marketplace location; countryCode (ISO-2, e.g. 'IL', 'US', 'ES') picks the proxy country and currency. Example: { \"label\": \"Valencia\", \"lat\": 39.4699, \"lng\": -0.3763, \"radiusKm\": 12, \"countryCode\": \"ES\" }. countryCode defaults to IL and currency defaults to that country's currency."
          },
          "knownDetailIds": {
            "title": "Known listing ids (skip detail fetch)",
            "type": "array",
            "description": "Listing ids you already have full details for (from a previous run). The actor ships these as cheap card-level rows and SKIPS their detail page; only new ids get the (expensive) detail enrichment. Use this on re-scans to cut cost dramatically. Leave empty to enrich every listing. Example: [\"1007384061689614\", \"1088244741046904\"]."
          },
          "repairItems": {
            "title": "Image repair items (direct re-fetch)",
            "type": "array",
            "description": "Listings whose photo link you lost (Facebook image links expire after a few days) and want re-fetched DIRECTLY from each listing's own item page, even when the search grid does not surface it this run. Each entry is { id, price, city } - price and city come from your own records so the emitted row is complete even if the item page yields only the photo. Items already found by the normal search flow this run are skipped (no double cost); gone/removed listings are skipped silently. Example: [{ \"id\": \"1007384061689614\", \"price\": 5200, \"city\": \"חיפה\" }]."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Facebook serves a login wall to datacenter IPs and ignores non-local IPs for location. The actor uses Apify RESIDENTIAL proxy and automatically picks each city's country (Israel for IL cities, US for US cities, etc.). Leave this as the default unless you have a reason to pin a single proxy country.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "proxyProvider": {
            "title": "Proxy provider (internal)",
            "enum": [
              "apify",
              "custom"
            ],
            "type": "string",
            "description": "Internal/experimental. Leave on the default. \"custom\" only works when the actor operator has configured a custom residential provider; without that configuration the actor silently uses Apify proxy as usual.",
            "default": "apify"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}