{
  "openapi": "3.0.1",
  "info": {
    "title": "Hacker News Scraper - Stories, Comments and Hiring",
    "description": "Search Hacker News stories, Show HN and Launch HN posts, comments and monthly Who is hiring threads. Filter by domain, author, date and points, or fetch feeds and item IDs. One clean row per item, ready for CSV, Excel or JSON.",
    "version": "0.1",
    "x-build-id": "WmWLIOax9ZJsy7Bhb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/s-r~hacker-news/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-s-r-hacker-news",
        "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/s-r~hacker-news/runs": {
      "post": {
        "operationId": "runs-sync-s-r-hacker-news",
        "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/s-r~hacker-news/run-sync": {
      "post": {
        "operationId": "run-sync-s-r-hacker-news",
        "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": {
          "query": {
            "title": "Query",
            "maxLength": 1024,
            "type": "string",
            "description": "Free text search. Defaults to story results and relevance sorting; cannot be combined with domain, item_ids or feed."
          },
          "domain": {
            "title": "Domain",
            "type": "string",
            "description": "Domain or HTTP URL to find in story URLs. Matches the exact hostname and subdomains after removing www."
          },
          "tags": {
            "title": "Tags",
            "type": "array",
            "description": "Item tags, combined with OR. Query and domain searches default to story; thread selectors use comment.",
            "items": {
              "type": "string"
            }
          },
          "author": {
            "title": "Author",
            "type": "string",
            "description": "Hacker News username. Combined with other search filters using AND."
          },
          "date_from": {
            "title": "Date from",
            "type": "string",
            "description": "Inclusive first UTC calendar day, YYYY-MM-DD."
          },
          "date_to": {
            "title": "Date to",
            "type": "string",
            "description": "Inclusive last UTC calendar day, YYYY-MM-DD."
          },
          "min_points": {
            "title": "Min points",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum story points. Comment scores are private, so this cannot be used for comment-only searches."
          },
          "min_comments": {
            "title": "Min comments",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum number of story comments. Not available for comment-only searches."
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "relevance uses Algolia search and is limited to 1000 source hits. date returns newest first and supports continuation. Defaults to relevance for query and date otherwise."
          },
          "max_results": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum delivered rows across continuation requests. Each request returns at most 1000 rows.",
            "default": 100
          },
          "item_ids": {
            "title": "Item ids",
            "type": "array",
            "description": "Specific item IDs or news.ycombinator.com/item?id= URLs, in the requested order. Duplicate IDs are removed. Cannot be combined with feed, thread selectors, query or domain.",
            "items": {
              "type": "string"
            }
          },
          "feed": {
            "title": "Feed",
            "enum": [
              "top",
              "new",
              "best",
              "ask",
              "show",
              "job",
              "front_page"
            ],
            "type": "string",
            "description": "Live HN feed. Feed order is preserved; max_results and date, author, tag and score filters still apply."
          },
          "story_id": {
            "title": "Story id",
            "type": "string",
            "description": "Get comments belonging to this story. Accepts a positive item ID or HN item URL."
          },
          "top_level_only": {
            "title": "Top level only",
            "type": "boolean",
            "description": "Only comments directly on the story. Defaults to true for hiring_month and false otherwise."
          },
          "hiring_month": {
            "title": "Hiring month",
            "type": "string",
            "description": "Month of a whoishiring thread, YYYY-MM. Returns comments from the selected monthly thread, with thread metadata alongside items."
          },
          "hiring_kind": {
            "title": "Hiring kind",
            "enum": [
              "hiring",
              "wants_to_be_hired",
              "freelancer"
            ],
            "type": "string",
            "description": "Monthly thread kind. Requires hiring_month; defaults to hiring."
          },
          "cursor": {
            "title": "Cursor",
            "maxLength": 100000,
            "type": "string",
            "description": "Opaque continuation cursor returned by a previous response. Keep the same selectors and filters; max_results may decrease."
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}