> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modulex.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Hacker News Integration for AI Agents & Workflows

> Access Hacker News content including top stories, new posts, Ask HN, Show HN, job postings, and search functionality for stories and comments.

{/* Self-hosted logo — build-time vendored from modulex.json / Iconify (see scripts/lib/logo.js). */}

<img src="https://mintcdn.com/modulexaillc/zKB2qsP6Q61VNLfB/logos/hackernews.svg?fit=max&auto=format&n=zKB2qsP6Q61VNLfB&q=85&s=858b8d08f2b7de30041382f833e09339" alt="Hacker News logo" width="72" height="72" data-path="logos/hackernews.svg" />

## Overview

Add **Hacker News** to any ModuleX agent or workflow. Read-only access to the official Hacker News JSON API (`hacker-news.firebaseio.com/v0`) plus keyword search backed by `hnrss.org` RSS feeds.

<Info>
  **Categories**: Social Media · News · Social · Technology · Community · **Auth**: ModuleX Managed Key · **Actions**: 10
</Info>

## Authentication

### ModuleX Managed Key

Use ModuleX's managed access (Hacker News API is public, no authentication required)

## Available Actions

<AccordionGroup>
  <Accordion title="search_stories — Search Hacker News stories by keyword. Returns matching stories with titles, links, and metadata.">
    ### Parameters

    <ResponseField name="keyword" type="string">
      Keyword to search for in story titles. Leave empty to get all new stories. (Default: \`\`)
    </ResponseField>

    <ResponseField name="max_results" type="integer">
      Maximum number of stories to return (1-50) (Default: `10`)
    </ResponseField>

    <ResponseField name="points" type="integer">
      Minimum points threshold for stories
    </ResponseField>

    <ResponseField name="comments" type="integer">
      Minimum comments threshold for stories
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "HNRSSItem": {
          "additionalProperties": false,
          "properties": {
            "title": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Title"
            },
            "link": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Link"
            },
            "description": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Description"
            },
            "pub_date": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Pub Date"
            },
            "guid": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Guid"
            },
            "author": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Author"
            },
            "comments_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Comments Url"
            }
          },
          "title": "HNRSSItem",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "stories": {
          "items": {
            "$ref": "#/$defs/HNRSSItem"
          },
          "title": "Stories",
          "type": "array"
        },
        "comments": {
          "items": {
            "$ref": "#/$defs/HNRSSItem"
          },
          "title": "Comments",
          "type": "array"
        },
        "count": {
          "default": 0,
          "title": "Count",
          "type": "integer"
        },
        "keyword": {
          "default": "",
          "title": "Keyword",
          "type": "string"
        },
        "source": {
          "default": "hnrss.org",
          "title": "Source",
          "type": "string"
        }
      },
      "required": [
        "success"
      ],
      "title": "SearchOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="search_comments — Search Hacker News comments by keyword. Find discussions mentioning specific topics.">
    ### Parameters

    <ResponseField name="keyword" type="string">
      Keyword to search for in comments. Leave empty to get all new comments. (Default: \`\`)
    </ResponseField>

    <ResponseField name="max_results" type="integer">
      Maximum number of comments to return (1-50) (Default: `10`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "HNRSSItem": {
          "additionalProperties": false,
          "properties": {
            "title": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Title"
            },
            "link": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Link"
            },
            "description": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Description"
            },
            "pub_date": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Pub Date"
            },
            "guid": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Guid"
            },
            "author": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Author"
            },
            "comments_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Comments Url"
            }
          },
          "title": "HNRSSItem",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "stories": {
          "items": {
            "$ref": "#/$defs/HNRSSItem"
          },
          "title": "Stories",
          "type": "array"
        },
        "comments": {
          "items": {
            "$ref": "#/$defs/HNRSSItem"
          },
          "title": "Comments",
          "type": "array"
        },
        "count": {
          "default": 0,
          "title": "Count",
          "type": "integer"
        },
        "keyword": {
          "default": "",
          "title": "Keyword",
          "type": "string"
        },
        "source": {
          "default": "hnrss.org",
          "title": "Source",
          "type": "string"
        }
      },
      "required": [
        "success"
      ],
      "title": "SearchOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_top_stories — Get the current top stories from the Hacker News front page.">
    ### Parameters

    <ResponseField name="limit" type="integer">
      Number of stories to return (1-100) (Default: `10`)
    </ResponseField>

    <ResponseField name="fetch_details" type="boolean">
      Whether to fetch full story details or just IDs (Default: `true`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "stories": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Stories",
          "type": "array"
        },
        "story_ids": {
          "items": {
            "type": "integer"
          },
          "title": "Story Ids",
          "type": "array"
        },
        "count": {
          "default": 0,
          "title": "Count",
          "type": "integer"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetStoriesOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_new_stories — Get the newest stories submitted to Hacker News.">
    ### Parameters

    <ResponseField name="limit" type="integer">
      Number of stories to return (1-100) (Default: `10`)
    </ResponseField>

    <ResponseField name="fetch_details" type="boolean">
      Whether to fetch full story details or just IDs (Default: `true`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "stories": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Stories",
          "type": "array"
        },
        "story_ids": {
          "items": {
            "type": "integer"
          },
          "title": "Story Ids",
          "type": "array"
        },
        "count": {
          "default": 0,
          "title": "Count",
          "type": "integer"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetStoriesOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_best_stories — Get the highest-ranked stories from Hacker News.">
    ### Parameters

    <ResponseField name="limit" type="integer">
      Number of stories to return (1-100) (Default: `10`)
    </ResponseField>

    <ResponseField name="fetch_details" type="boolean">
      Whether to fetch full story details or just IDs (Default: `true`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "stories": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Stories",
          "type": "array"
        },
        "story_ids": {
          "items": {
            "type": "integer"
          },
          "title": "Story Ids",
          "type": "array"
        },
        "count": {
          "default": 0,
          "title": "Count",
          "type": "integer"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetStoriesOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_ask_stories — Get 'Ask HN' stories where users ask questions of the community.">
    ### Parameters

    <ResponseField name="limit" type="integer">
      Number of stories to return (1-100) (Default: `10`)
    </ResponseField>

    <ResponseField name="fetch_details" type="boolean">
      Whether to fetch full story details or just IDs (Default: `true`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "stories": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Stories",
          "type": "array"
        },
        "story_ids": {
          "items": {
            "type": "integer"
          },
          "title": "Story Ids",
          "type": "array"
        },
        "count": {
          "default": 0,
          "title": "Count",
          "type": "integer"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetStoriesOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_show_stories — Get 'Show HN' stories where users showcase projects and creations.">
    ### Parameters

    <ResponseField name="limit" type="integer">
      Number of stories to return (1-100) (Default: `10`)
    </ResponseField>

    <ResponseField name="fetch_details" type="boolean">
      Whether to fetch full story details or just IDs (Default: `true`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "stories": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Stories",
          "type": "array"
        },
        "story_ids": {
          "items": {
            "type": "integer"
          },
          "title": "Story Ids",
          "type": "array"
        },
        "count": {
          "default": 0,
          "title": "Count",
          "type": "integer"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetStoriesOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_job_stories — Get job postings from Hacker News.">
    ### Parameters

    <ResponseField name="limit" type="integer">
      Number of stories to return (1-100) (Default: `10`)
    </ResponseField>

    <ResponseField name="fetch_details" type="boolean">
      Whether to fetch full story details or just IDs (Default: `true`)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "stories": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "title": "Stories",
          "type": "array"
        },
        "story_ids": {
          "items": {
            "type": "integer"
          },
          "title": "Story Ids",
          "type": "array"
        },
        "count": {
          "default": 0,
          "title": "Count",
          "type": "integer"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetStoriesOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_item — Get details of a specific Hacker News item by ID (story, comment, poll, etc.).">
    ### Parameters

    <ResponseField name="item_id" type="integer" required>
      The ID of the item to fetch
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "item": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Item"
        },
        "item_id": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Item Id"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetItemOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="get_user — Get a Hacker News user's profile including karma, about text, and submitted items.">
    ### Parameters

    <ResponseField name="username" type="string" required>
      The HN username to look up
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "user": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "User"
        },
        "username": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Username"
        }
      },
      "required": [
        "success"
      ],
      "title": "GetUserOutput",
      "type": "object"
    }
    ```
  </Accordion>
</AccordionGroup>

## Limits & Quotas

* `fetch_details=False` returns only the ID list (one HTTP call instead
  of N+1). `fetch_details=True` issues one detail call per item, capped
  at `limit`.
* `max_results` is capped at 50 on the RSS endpoints (hnrss.org cap).
* Failures and parse errors surface as `success=False` with `error`.

## Related integrations

<CardGroup cols={3}>
  <Card title="Hootsuite" href="/integrations/tools/hootsuite" />

  <Card title="LinkedIn" href="/integrations/tools/linkedin" />

  <Card title="Pinterest" href="/integrations/tools/pinterest" />
</CardGroup>

## Links

* [Hacker News](https://news.ycombinator.com)
