{
  "openapi": "3.0.1",
  "info": {
    "title": "Secondsol Scraper — Used Solar Panels",
    "description": "Scrape solar panel and inverter listings from Secondsol.com. Extract product specs, prices, seller info, and availability from the secondary solar market.",
    "version": "0.1",
    "x-build-id": "mlMkRPDtBUkaUU5zH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rastriq~secondsol-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rastriq-secondsol-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/rastriq~secondsol-scraper/runs": {
      "post": {
        "operationId": "runs-sync-rastriq-secondsol-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/rastriq~secondsol-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-rastriq-secondsol-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": {
          "categories": {
            "title": "🛍️ Product categories",
            "type": "array",
            "description": "Pick which parts of the catalogue to scrape. <b>Leave empty to scrape every category.</b> For a first test, choose just <b>PV Modules / Panels</b>.",
            "items": {
              "type": "string",
              "enum": [
                "pv-module",
                "inverter",
                "inverter-spare-parts",
                "storage",
                "pv-kit",
                "pv-thermal",
                "solar-thermal",
                "heatpump",
                "e-mobility",
                "mount",
                "cable",
                "connector",
                "tool",
                "accessoire",
                "repowering",
                "auctions"
              ],
              "enumTitles": [
                "PV Modules / Panels",
                "Inverters",
                "Inverter spare parts",
                "Storage / Solar batteries",
                "PV packages / kits",
                "PV Thermal",
                "Solar thermal",
                "Heat pumps",
                "Electromobility",
                "Mounting systems",
                "Cables",
                "Connectors",
                "Tools & meters",
                "Other accessories",
                "Repowering",
                "Auctions"
              ]
            },
            "default": []
          },
          "maxItems": {
            "title": "Maximum listings to collect",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many listings in total (across all chosen categories). Start small (25–50) to preview; leave empty to collect everything within the page limit below."
          },
          "maxPagesPerCategory": {
            "title": "Max pages per category",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many API pages (25 listings each) to fetch per category. Keep low for tests; raise (e.g. 100+) for a full export. For reference, PV Modules currently has ~88 pages.",
            "default": 5
          },
          "resolveSellerNames": {
            "title": "Look up seller names",
            "type": "boolean",
            "description": "Each listing always includes the seller's ID and public profile link. Turn this on to additionally fetch each seller's display name (one extra request per unique seller, cached). Leave off for fastest runs.",
            "default": false
          },
          "language": {
            "title": "Link language",
            "enum": [
              "en",
              "de",
              "it",
              "nl"
            ],
            "type": "string",
            "description": "Language used in the product and seller links in the output. Does not change which products are found.",
            "default": "en"
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Example: <code>https://www.secondsol.com/en/marketplace-search/inverter.htm</code>. Leave empty to use the categories above.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "sort": {
            "title": "Sort order",
            "type": "string",
            "description": "API sort key. Leave empty to use each category's natural default (newest / top). Examples: <code>-TOP</code>, <code>-STAMP_START</code> (newest first), <code>price</code>.",
            "default": ""
          },
          "minDelaySecs": {
            "title": "Minimum delay between requests (seconds)",
            "minimum": 0,
            "type": "integer",
            "description": "Lower bound of a small random pause between API requests, to stay polite.",
            "default": 1
          },
          "maxDelaySecs": {
            "title": "Maximum delay between requests (seconds)",
            "minimum": 0,
            "type": "integer",
            "description": "Upper bound of the random pause between API requests.",
            "default": 2
          },
          "debugDump": {
            "title": "Debug: save a raw API sample",
            "type": "boolean",
            "description": "Saves the first API page (JSON) to the run's storage for troubleshooting. Leave off for normal use.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Datacenter proxies are plenty for this API. Recommended to leave on.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}