{
  "openapi": "3.0.1",
  "info": {
    "title": "Fnac.com Scraper: Prices, EAN, Stock, Sellers & Reviews",
    "description": "Scrape fnac.com products from any search, category or product URL, or by keyword with brand, category, price, seller and stock filters. Get price, list price, discount, EAN, SKU, brand, stock, marketplace sellers, ratings, reviews, specs and images. No API key needed.",
    "version": "1.0",
    "x-build-id": "r3fGw54gdItheoizF"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fayoussef~fnac-data-scraping/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fayoussef-fnac-data-scraping",
        "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/fayoussef~fnac-data-scraping/runs": {
      "post": {
        "operationId": "runs-sync-fayoussef-fnac-data-scraping",
        "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/fayoussef~fnac-data-scraping/run-sync": {
      "post": {
        "operationId": "run-sync-fayoussef-fnac-data-scraping",
        "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": {
          "start_urls": {
            "title": "Fnac.com URLs (search, category or product)",
            "type": "array",
            "description": "Paste any fnac.com URL, one per line: search result pages, category pages (including category hubs, which are expanded into their sub-categories) or product pages. Search and category pages are paginated automatically. Leave empty to use search terms and filters below instead. Only fnac.com (France) is supported.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "url_type": {
            "title": "URL type",
            "enum": [
              "auto",
              "listing",
              "product"
            ],
            "type": "string",
            "description": "Leave on automatic detection: product URLs (containing /a or /mp followed by a number) are scraped directly and every other URL is treated as a search or category page. Force a type only if detection gets a URL wrong.",
            "default": "auto"
          },
          "search_terms": {
            "title": "Search terms",
            "type": "array",
            "description": "Search fnac.com by keyword instead of pasting a URL, one term per line, for example \"ordinateur portable\" or \"casque bluetooth\". The filters below narrow these searches.",
            "items": {
              "type": "string"
            }
          },
          "category": {
            "title": "Category",
            "type": "string",
            "description": "Limit search terms to one fnac.com top-level category, as fnac.com names it, for example Informatique, Téléphonie, TV, Vidéo, Jeu vidéo, Livres, BD, Ebooks or Maison. Case and accents do not matter. If a search does not offer the category, the log lists the ones it does."
          },
          "brands": {
            "title": "Brands",
            "type": "array",
            "description": "Only keep products from these brands, for example Lenovo or Apple. Case does not matter; the brand must appear in fnac.com's brand filter for that search.",
            "items": {
              "type": "string"
            }
          },
          "sort_by": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "price_asc",
              "price_desc",
              "best_sellers",
              "rating"
            ],
            "type": "string",
            "description": "Order of search results. With a page limit, this decides which products you get.",
            "default": "relevance"
          },
          "sold_by_fnac": {
            "title": "Sold by Fnac only",
            "type": "boolean",
            "description": "Only keep products whose main offer is sold by Fnac itself, excluding marketplace sellers. Narrows search terms on fnac.com and is also checked on every scraped product, including URLs.",
            "default": false
          },
          "min_price": {
            "title": "Min price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep products at or above this price. For search terms it also narrows the search with fnac.com's price filter."
          },
          "max_price": {
            "title": "Max price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep products at or below this price. For search terms it also narrows the search with fnac.com's price filter."
          },
          "condition": {
            "title": "Condition",
            "enum": [
              "any",
              "new",
              "refurbished"
            ],
            "type": "string",
            "description": "Keep all products, only new ones, or only refurbished (reconditionné) ones.",
            "default": "any"
          },
          "in_stock_only": {
            "title": "In stock only",
            "type": "boolean",
            "description": "Leave out products that cannot be ordered online right now.",
            "default": false
          },
          "max_depth": {
            "title": "Max pages per search or category",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How many result pages to walk for each search, category or sub-category. fnac.com shows about 20 products per page. Free plan runs are limited to 3 pages.",
            "default": 5
          },
          "max_items": {
            "title": "Max products",
            "minimum": 1,
            "type": "integer",
            "description": "Stop once this many products have been scraped across all URLs and searches. Leave empty for no limit."
          },
          "max_concurrency": {
            "title": "Parallel product pages",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many product pages are fetched at the same time. The default is a good balance of speed and reliability.",
            "default": 10
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional override. By default the Actor uses Apify residential proxies in France, which fnac.com requires.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}