{
  "openapi": "3.0.1",
  "info": {
    "title": "Product Hunt Scraper",
    "description": "Collect Product Hunt launches from daily and past leaderboards, category or topic pages, and supported URLs. Export ranks, engagement, teams, media, and optional extra data.",
    "version": "0.1",
    "x-build-id": "FNkeGraFBsV2gTC9D"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/maximedupre~product-hunt-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-maximedupre-product-hunt-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/maximedupre~product-hunt-scraper/runs": {
      "post": {
        "operationId": "runs-sync-maximedupre-product-hunt-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/maximedupre~product-hunt-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-maximedupre-product-hunt-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",
        "required": [
          "target"
        ],
        "properties": {
          "target": {
            "title": "Find launches from",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "yearly",
              "category",
              "topic",
              "pageUrls"
            ],
            "type": "string",
            "description": "Choose one Product Hunt source. Fill in only that source's options. Other source options are ignored."
          },
          "startDate": {
            "title": "Start date",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
            "type": "string",
            "description": "First daily leaderboard date in YYYY-MM-DD. Leave blank to scrape today's California-time leaderboard. Add an end date to include each day in a past date range."
          },
          "endDate": {
            "title": "End date",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
            "type": "string",
            "description": "Optional last date in an inclusive daily range, in YYYY-MM-DD. Leave blank to scrape only the start date."
          },
          "startWeek": {
            "title": "Start week",
            "pattern": "^\\d{4}-(0[1-9]|[1-4]\\d|5[0-3])$",
            "type": "string",
            "description": "First Product Hunt leaderboard week in YYYY-WW, such as 2026-52. Add an end week for an inclusive range."
          },
          "endWeek": {
            "title": "End week",
            "pattern": "^\\d{4}-(0[1-9]|[1-4]\\d|5[0-3])$",
            "type": "string",
            "description": "Optional last week in an inclusive range, in YYYY-WW. Leave blank to scrape only the start week."
          },
          "startMonth": {
            "title": "Start month",
            "pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
            "type": "string",
            "description": "First Product Hunt leaderboard month in YYYY-MM, such as 2026-11. Add an end month for an inclusive range."
          },
          "endMonth": {
            "title": "End month",
            "pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
            "type": "string",
            "description": "Optional last month in an inclusive range, in YYYY-MM. Leave blank to scrape only the start month."
          },
          "startYear": {
            "title": "Start year",
            "minimum": 1000,
            "maximum": 9999,
            "type": "integer",
            "description": "First Product Hunt leaderboard year, such as 2026. Add an end year for an inclusive range."
          },
          "endYear": {
            "title": "End year",
            "minimum": 1000,
            "maximum": 9999,
            "type": "integer",
            "description": "Optional last year in an inclusive range. Leave blank to scrape only the start year."
          },
          "categorySlugs": {
            "title": "Category slugs",
            "uniqueItems": true,
            "type": "array",
            "description": "Add one Product Hunt category slug per row, such as ai-code-editors.",
            "items": {
              "type": "string",
              "minLength": 1,
              "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
            }
          },
          "topicSlugs": {
            "title": "Topic slugs",
            "uniqueItems": true,
            "type": "array",
            "description": "Add one Product Hunt topic slug per row, such as developer-tools or open-source. The legacy alias opensource is also accepted.",
            "items": {
              "type": "string",
              "minLength": 1,
              "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
            }
          },
          "productHuntPageUrls": {
            "title": "Product Hunt page URLs",
            "uniqueItems": true,
            "type": "array",
            "description": "Add supported Product Hunt daily, weekly, monthly, yearly, category, or topic page URLs, one per row. Product-detail, post, search, home, and other URLs are rejected.",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "maxNbItemsToScrape": {
            "title": "Maximum launches to save",
            "minimum": 1,
            "type": "integer",
            "description": "Leave this empty to save all available launches until the source is exhausted. Set a positive number to stop after that many saved launches."
          },
          "shouldIncludePromotedListings": {
            "title": "Include promoted listings?",
            "type": "boolean",
            "description": "Include listings that Product Hunt marks as promoted. Turn this off to keep non-promoted listings only.",
            "default": false
          },
          "shouldScrapeOnlyFeaturedLaunches": {
            "title": "Featured launches only?",
            "type": "boolean",
            "description": "Turn this on to keep only launches in Product Hunt's featured feed. Turn it off to keep all eligible launches.",
            "default": false
          },
          "shouldScrapeComments": {
            "title": "Scrape comments?",
            "type": "boolean",
            "description": "Collect available Product Hunt comments and public commenter details for each launch. Off by default.",
            "default": false
          },
          "shouldScrapeReviews": {
            "title": "Scrape reviews?",
            "type": "boolean",
            "description": "Collect available Product Hunt reviews and public reviewer details for each launch. Off by default.",
            "default": false
          },
          "shouldScrapeBuiltWith": {
            "title": "Scrape built-with tools?",
            "type": "boolean",
            "description": "Collect Product Hunt's available Built With entries for each launch. Off by default.",
            "default": false
          },
          "shouldScrapeLaunches": {
            "title": "Scrape launch history?",
            "type": "boolean",
            "description": "Collect the product's visible Product Hunt launch history. Off by default.",
            "default": false
          },
          "shouldScrapeWebsite": {
            "title": "Scrape website enrichment?",
            "type": "boolean",
            "description": "Visit each linked product website for its title, description, visible text, and public emails when found. Off by default. Email enrichment costs extra only when at least one email is saved.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}