{
  "openapi": "3.0.1",
  "info": {
    "title": "Leboncoin.fr ·Only $0.79💰· Any Category· Full Listings + GPS",
    "description": "[Only $0.79💰] Turn any leboncoin.fr search into a clean dataset — real estate, cars, jobs, goods. One row per ad: price, full description, GPS coordinates, seller, all images, every category attribute, plus boost flags. Anti-bot handled — no proxy or captcha setup. JSON or CSV, billed per result.",
    "version": "0.0",
    "x-build-id": "FgAV8iz0rWGP2q8VV"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~leboncoin-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-leboncoin-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~leboncoin-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-leboncoin-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~leboncoin-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-leboncoin-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": "Leboncoin search URLs",
            "type": "array",
            "description": "Full leboncoin.fr `/recherche?...` URLs. Filters in the query string (category, location, price range, keyword) are translated to the search API automatically. Mix several searches in one run.",
            "items": {
              "type": "string"
            }
          },
          "adUrls": {
            "title": "Direct ad URLs",
            "type": "array",
            "description": "Individual leboncoin ad URLs (…/ad/<category>/<id>). Each is scraped as a single listing. Use alongside or instead of search URLs.",
            "items": {
              "type": "string"
            }
          },
          "sellerUserIds": {
            "title": "Seller user IDs",
            "type": "array",
            "description": "Seller `user_id` values. Each expands to that seller's entire active inventory (every ad they have online), paginated like a search.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Maximum ads per search URL",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on the number of ads collected for each search URL. Some leboncoin searches return hundreds of thousands of results — use this to control your run size and cost. leboncoin caps deep pagination, so very large searches are best split by location or filter.",
            "default": 1000
          },
          "maxConcurrency": {
            "title": "Max concurrent search URLs",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many search URLs to process in parallel. Pages within a single search are fetched sequentially (the access cookie is reused down the pages). Keep this low (1–3) for the most reliable results.",
            "default": 3
          },
          "strictComplete": {
            "title": "Fail the run if a segment is incomplete",
            "type": "boolean",
            "description": "leboncoin caps how deep a single search can paginate. With this on, if any segment returns fewer ads than leboncoin reports exist, the discrepancy is logged and the run is marked FAILED — so you only accept a complete dataset. Split large searches by price or location to stay under the cap. Off by default (log-only).",
            "default": false
          },
          "enrichSeller": {
            "title": "Enrich seller & pro-store profiles",
            "type": "boolean",
            "description": "For each ad, also fetch the seller's profile — member since, total active listings, badges, response time — and, for professional sellers, their store details: SIREN/SIRET, business address, website and ratings. Results are cached per seller (a pro with many listings costs one lookup), but this still adds requests, so runs are slower and a bit pricier. Off by default.",
            "default": false
          },
          "enrichSellerPhone": {
            "title": "Include the boutique phone number for pro sellers",
            "type": "boolean",
            "description": "When seller enrichment is on, also fetch the professional seller's public boutique phone number. It is fetched through the unblocker so it does not slow the rest of the run, and it is included in the seller enrichment price (no separate charge). On by default; turn off to skip phone lookups.",
            "default": true
          },
          "enrichConcurrency": {
            "title": "Seller enrichment concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many sellers to enrich in parallel within a page. Higher is faster; the default is tuned to stay within leboncoin's anti-bot tolerance. Range 1 to 10.",
            "default": 6
          },
          "skipEnrichSellerIds": {
            "title": "Skip re-enriching these seller IDs",
            "type": "array",
            "description": "Seller user IDs (the `seller.userId` values from a previous run) that should NOT be enriched again. Matching sellers skip the profile, phone and email lookup and its charge; the ad is still returned, with the seller profile left empty. Use this on recurring sweeps so you only pay to enrich sellers you don't already have. Default none.",
            "items": {
              "type": "string"
            }
          },
          "enrichEmails": {
            "title": "Find contact emails for pro sellers (experimental, billed per email)",
            "type": "boolean",
            "description": "Premium add-on. For professional sellers, finds a contact email from their own website (the site captured by the seller enrichment above). Adds `contactEmail` + `contactWebsite` columns plus a detailed `emailEnrichment` object. Cached per seller, and charged only when an email is actually found — never for misses. Leave the seller enrichment on so the website is available. Off by default.",
            "default": false
          },
          "qualifyByPayment": {
            "title": "💳 Qualify by payment (flag businesses that take money online)",
            "type": "boolean",
            "description": "Requires \"Enrich with contact emails\". Scans each business's website — reusing the pages already fetched for email discovery, so no extra cost or time — for payment processors and e-commerce platforms (Stripe, Shopify, PayPal, Paddle, Lemon Squeezy, WooCommerce, Square, Chargebee and more). Adds takesPayments (is this a real paying business?), paymentProcessors (which stack), stripeLiveKey (the public key if exposed) and paymentConfidence. Turn raw contacts into monetization-qualified leads. No extra charge — included with each enriched company.",
            "default": false
          },
          "proxy": {
            "title": "Proxy configuration (optional override)",
            "type": "object",
            "description": "Leave empty — the actor already routes all traffic through its own built-in residential proxy at no extra cost to you. Only set this if you want to use your own proxies."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}