{
  "openapi": "3.0.1",
  "info": {
    "title": "Hacker News Scraper: Search, Mentions & Who Is Hiring Jobs",
    "description": "Search Hacker News stories and comments by keyword, domain, date and points, get the front page, new, best, Ask and Show HN, monitor brand mentions with 'only new' mode, and turn 'Who is hiring' threads into structured jobs with salary, remote flag and tech stack. Official APIs.",
    "version": "0.1",
    "x-build-id": "chanHFJEQh3OZuqpA"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tidelane~hacker-news/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tidelane-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/tidelane~hacker-news/runs": {
      "post": {
        "operationId": "runs-sync-tidelane-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/tidelane~hacker-news/run-sync": {
      "post": {
        "operationId": "run-sync-tidelane-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": {
          "mode": {
            "title": "What to get",
            "enum": [
              "search",
              "list",
              "whoIsHiring"
            ],
            "type": "string",
            "description": "Search: stories or comments by keyword. List: front page, new, best, Ask HN, Show HN or jobs as ranked now. Who is hiring: job posts of the monthly thread as structured data.",
            "default": "search"
          },
          "queries": {
            "title": "Search terms",
            "type": "array",
            "description": "Search mode: one search per term, for example your product name or a domain. Empty searches everything (use filters).",
            "items": {
              "type": "string"
            }
          },
          "type": {
            "title": "Search in",
            "enum": [
              "story",
              "comment",
              "ask_hn",
              "show_hn",
              "job",
              "poll",
              "all"
            ],
            "type": "string",
            "description": "Search mode: which kind of items to search.",
            "default": "story"
          },
          "searchIn": {
            "title": "Match the terms in",
            "enum": [
              "all",
              "title",
              "url",
              "text"
            ],
            "type": "string",
            "description": "Search mode: 'Linked URL' finds every story that links to a domain, for example example.com.",
            "default": "all"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Relevance returns at most 1,000 results per term (a Hacker News search limit). Date has no limit.",
            "default": "relevance"
          },
          "from": {
            "title": "From date",
            "type": "string",
            "description": "Search mode: only items created on or after this date (YYYY-MM-DD)."
          },
          "to": {
            "title": "To date",
            "type": "string",
            "description": "Search mode: only items created on or before this date (YYYY-MM-DD)."
          },
          "minPoints": {
            "title": "Min points",
            "minimum": 0,
            "type": "integer",
            "description": "Search mode: only stories with at least this many points."
          },
          "minComments": {
            "title": "Min comments",
            "minimum": 0,
            "type": "integer",
            "description": "Search mode: only stories with at least this many comments."
          },
          "onlyNew": {
            "title": "Only new items since the last run",
            "type": "boolean",
            "description": "Search mode: remembers the newest item per search (key-value store 'hacker-news-monitor-state') and returns only newer items next time. Use with a schedule to monitor mentions.",
            "default": false
          },
          "list": {
            "title": "List",
            "enum": [
              "top",
              "new",
              "best",
              "ask",
              "show",
              "job"
            ],
            "type": "string",
            "description": "List mode: which ranked list.",
            "default": "top"
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Search: per search term. List: items of the list (up to 500).",
            "default": 100
          },
          "includeComments": {
            "title": "Add the comments of each story",
            "type": "boolean",
            "description": "Search and list mode: also return the comments of every story (each comment is one result, with its depth in the thread).",
            "default": false
          },
          "maxCommentsPerStory": {
            "title": "Max comments per story",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Limit for 'Add the comments'.",
            "default": 100
          },
          "threadKind": {
            "title": "Thread",
            "enum": [
              "hiring",
              "freelancer"
            ],
            "type": "string",
            "description": "Who is hiring mode: the monthly 'Who is hiring?' thread, or company posts of 'Freelancer? Seeking freelancer?'.",
            "default": "hiring"
          },
          "months": {
            "title": "Months",
            "type": "array",
            "description": "Who is hiring mode: months like 2026-10. Empty takes the latest thread.",
            "items": {
              "type": "string"
            }
          },
          "remoteOnly": {
            "title": "Only remote jobs",
            "type": "boolean",
            "description": "Who is hiring mode: keep posts that say REMOTE in their first line.",
            "default": false
          },
          "keywords": {
            "title": "Job keywords",
            "type": "array",
            "description": "Who is hiring mode: keep posts that contain at least one of these words, for example Rust or Berlin.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}