{
  "openapi": "3.0.1",
  "info": {
    "title": "Hacker News Scraper: npm & PyPI Developer Signals",
    "description": "Track Hacker News mentions, Show HN and Launch HN posts, plus npm and PyPI package versions, repo links and download counts, in one dataset. Keyless public APIs. From $0.001 per item.",
    "version": "0.1",
    "x-build-id": "ecm9fKbQMLUaXcHYa"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/transparent_meteorite~developer-signals/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-transparent_meteorite-developer-signals",
        "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/transparent_meteorite~developer-signals/runs": {
      "post": {
        "operationId": "runs-sync-transparent_meteorite-developer-signals",
        "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/transparent_meteorite~developer-signals/run-sync": {
      "post": {
        "operationId": "run-sync-transparent_meteorite-developer-signals",
        "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": {
          "modes": {
            "title": "Modes to run",
            "type": "array",
            "description": "hnSearch: Hacker News stories (and optionally comments) matching your keywords or domains. showHn: Show HN and/or Launch HN posts. npmPackages: npm metadata and download counts. pypiPackages: PyPI metadata and download counts.",
            "items": {
              "type": "string",
              "enum": [
                "hnSearch",
                "showHn",
                "npmPackages",
                "pypiPackages"
              ],
              "enumTitles": [
                "Hacker News search",
                "Show HN / Launch HN",
                "npm packages",
                "PyPI packages"
              ]
            },
            "default": [
              "hnSearch",
              "npmPackages"
            ]
          },
          "hnKeywords": {
            "title": "Hacker News keywords",
            "type": "array",
            "description": "One search per row (brand, product, competitor, technology). Used by hnSearch; in showHn mode they filter the launches (leave empty to get all recent launches). Example: [\"apify\",\"web scraping\"].",
            "items": {
              "type": "string"
            }
          },
          "npmPackages": {
            "title": "npm packages",
            "type": "array",
            "description": "Package names, scoped names allowed (@scope/name). Returns latest version, description, license, repository, homepage, keywords plus daily, weekly and monthly downloads. Example: [\"crawlee\",\"@apify/tsconfig\"].",
            "items": {
              "type": "string"
            }
          },
          "pypiPackages": {
            "title": "PyPI packages",
            "type": "array",
            "description": "Package names. Returns latest version, summary, license, Python requirement, project links plus last day, week and month downloads from pypistats.org when available. Example: [\"requests\",\"apify-client\"].",
            "items": {
              "type": "string"
            }
          },
          "sinceDate": {
            "title": "Since",
            "type": "string",
            "description": "Only Hacker News items created after this. An ISO date (2026-09-01) or a relative span such as 30 days, 12 weeks or 6 months. Empty means no limit. Example: \"2026-09-01\" or \"30 days\".",
            "default": "90 days"
          },
          "dateFrom": {
            "title": "Posted from (date)",
            "type": "string",
            "description": "Optional start date, YYYY-MM-DD. Only Hacker News items created on or after it. When set it replaces Since. Example: 2026-09-01."
          },
          "dateTo": {
            "title": "Posted to (date)",
            "type": "string",
            "description": "Optional end date, YYYY-MM-DD, inclusive. Only Hacker News items created on or before it. Combine with Posted from for an exact window."
          },
          "maxItemsPerQuery": {
            "title": "Max items per query",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on Hacker News rows per keyword, per domain and per launch type. Algolia exposes at most 1,000 hits per query. This is your cost ceiling at $0.001 per row.",
            "default": 50
          },
          "hnDomains": {
            "title": "Hacker News domains",
            "type": "array",
            "description": "Find stories that link to a domain, for example github.com/yourorg or yourproduct.com. One per row, no https://.",
            "items": {
              "type": "string"
            }
          },
          "hnIncludeComments": {
            "title": "Include comments that mention keywords",
            "type": "boolean",
            "description": "Adds comment rows (recordType comment) for keyword searches. Each comment row is billed as one Hacker News item.",
            "default": false
          },
          "hnSort": {
            "title": "Sort order",
            "enum": [
              "date",
              "relevance"
            ],
            "type": "string",
            "description": "date: newest first. relevance: Algolia's relevance ranking.",
            "default": "date"
          },
          "hnMinPoints": {
            "title": "Minimum points",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Skip stories with fewer points. 0 keeps everything.",
            "default": 0
          },
          "minPoints": {
            "title": "Minimum points",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Skip Hacker News stories with fewer points. 0 keeps everything. Same as the older Minimum points field; the higher of the two is used.",
            "default": 0
          },
          "minComments": {
            "title": "Minimum comments",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Skip Hacker News stories with fewer comments. 0 keeps everything.",
            "default": 0
          },
          "author": {
            "title": "Author (HN username)",
            "type": "string",
            "description": "Optional. Only items submitted or written by this Hacker News user, for example pg or dang. Combine with keywords to track what one person says about a topic."
          },
          "includeAuthorKarma": {
            "title": "Add author karma",
            "type": "boolean",
            "description": "Adds authorKarma (the public Hacker News karma of each author) to story and comment rows. Costs one free API call per distinct author, up to 150 per run. Turn off for the fastest run.",
            "default": true
          },
          "showHnKind": {
            "title": "Launch type (showHn mode)",
            "enum": [
              "both",
              "showHn",
              "launchHn"
            ],
            "type": "string",
            "description": "Which launch posts to return in showHn mode.",
            "default": "both"
          },
          "timeBudgetSecs": {
            "title": "Time budget (seconds)",
            "minimum": 30,
            "maximum": 3000,
            "type": "integer",
            "description": "Soft limit. When it passes, the actor stops and returns what it has.",
            "default": 300
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}