npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

desearch-js

v1.3.0

Published

Desearch SDK for the Node.js

Readme

Desearch

The official JavaScript SDK for the Desearch API - AI-driven search, web crawling, and X (Twitter) data extraction.

Table of Contents

Installation

npm install desearch-js

Quick Start

import Desearch from "desearch-js";

const desearch = new Desearch("your-api-key");

// Perform an AI-powered search
desearch
  .aiSearch({
    prompt: "Latest developments in AI",
    tools: ["web", "twitter", "reddit"],
  })
  .then((response) => {
    console.log(response);
  });

AI Contextual Search

aiSearch

AI-powered multi-source contextual search. Searches across web, X (Twitter), Reddit, YouTube, HackerNews, Wikipedia, and arXiv and returns results with optional AI-generated summaries.

| Parameter | Type | Required | Default | Description | | ------------------------ | ------------------------ | -------- | ---------------------------- | ---------------------------------------------------------- | | prompt | string | Yes | — | Search query prompt | | tools | (ToolEnum \| string)[] | Yes | — | A list of tools to be used for the search | | start_date | string \| null | No | null | The start date for the search query (YYYY-MM-DDTHH:MM:SSZ) | | end_date | string \| null | No | null | The end date for the search query (YYYY-MM-DDTHH:MM:SSZ) | | date_filter | DateFilterEnum \| null | No | 'PAST_24_HOURS' | Predefined date filter for search results | | result_type | ResultTypeEnum \| null | No | 'LINKS_WITH_FINAL_SUMMARY' | The result type for the search | | system_message | string \| null | No | '' | System message for the search | | scoring_system_message | string \| null | No | null | System message for scoring the response | | count | number \| null | No | 10 | Number of results per source (10–200) |

desearch
  .aiSearch({
    prompt: "Bittensor",
    tools: ["web", "hackernews", "reddit", "wikipedia", "youtube", "twitter", "arxiv"],
    date_filter: "PAST_24_HOURS",
    result_type: "LINKS_WITH_FINAL_SUMMARY",
    count: 20,
  })
  .then((result) => {
    console.log(result);
  });

AI Web Links Search

aiWebLinksSearch

Search for raw links across web sources (web, HackerNews, Reddit, Wikipedia, YouTube, arXiv). Returns structured link results without AI summaries.

| Parameter | Type | Required | Default | Description | | --------- | --------------------------- | -------- | ------- | ------------------------------------- | | prompt | string | Yes | — | Search query prompt | | tools | (WebToolEnum \| string)[] | Yes | — | List of tools to search with | | count | number \| null | No | 10 | Number of results per source (10–200) |

desearch
  .aiWebLinksSearch({
    prompt: "What are the recent sport events?",
    tools: ["web", "hackernews", "reddit", "wikipedia", "youtube", "arxiv"],
    count: 20,
  })
  .then((result) => {
    console.log(result);
  });

AI X Posts Links Search

aiXLinksSearch

Search for X (Twitter) post links matching a prompt using AI-powered models. Returns tweet objects from the miner network.

| Parameter | Type | Required | Default | Description | | --------- | ---------------- | -------- | ------- | ------------------------------------- | | prompt | string | Yes | — | Search query prompt | | count | number \| null | No | 10 | Number of results per source (10–200) |

desearch
  .aiXLinksSearch({
    prompt: "What are the recent sport events?",
    count: 20,
  })
  .then((result) => {
    console.log(result);
  });

X Search

xSearch

X (Twitter) search with extensive filtering options: date range, user, language, verification status, media type (image/video/quote), and engagement thresholds (min likes, retweets, replies). Sort by Top or Latest.

| Parameter | Type | Required | Default | Description | | --------------- | -------------------------- | -------- | ------- | ---------------------------------------- | | query | string | Yes | — | Advanced search query | | sort | string \| null | No | 'Top' | Sort by Top or Latest | | user | string \| null | No | null | User to search for | | start_date | string \| null | No | null | Start date in UTC (YYYY-MM-DD) | | end_date | string \| null | No | null | End date in UTC (YYYY-MM-DD) | | lang | string \| null | No | null | Language code (e.g., en, es, fr) | | verified | boolean \| null | No | null | Filter for verified users | | blue_verified | boolean \| null | No | null | Filter for blue checkmark verified users | | is_quote | boolean \| null | No | null | Include only tweets with quotes | | is_video | boolean \| null | No | null | Include only tweets with videos | | is_image | boolean \| null | No | null | Include only tweets with images | | min_retweets | number \| string \| null | No | null | Minimum number of retweets | | min_replies | number \| string \| null | No | null | Minimum number of replies | | min_likes | number \| string \| null | No | null | Minimum number of likes | | count | number \| null | No | 20 | Number of tweets to retrieve (1–100) |

desearch
  .xSearch({
    query: "Whats going on with Bittensor",
    sort: "Top",
    user: "elonmusk",
    start_date: "2024-12-01",
    end_date: "2025-02-25",
    lang: "en",
    verified: true,
    blue_verified: true,
    count: 20,
  })
  .then((result) => {
    console.log(result);
  });

Fetch Posts by URLs

xPostsByUrls

Fetch full post data for a list of X (Twitter) post URLs. Returns metadata, content, and engagement metrics for each URL.

| Parameter | Type | Required | Default | Description | | --------- | ---------- | -------- | ------- | ----------------------------- | | urls | string[] | Yes | — | List of post URLs to retrieve |

desearch
  .xPostsByUrls({
    urls: ["https://x.com/RacingTriple/status/1892527552029499853"],
  })
  .then((result) => {
    console.log(result);
  });

Retrieve Post by ID

xPostById

Fetch a single X (Twitter) post by its unique ID. Returns metadata, content, and engagement metrics.

| Parameter | Type | Required | Default | Description | | --------- | -------- | -------- | ------- | ------------------------- | | id | string | Yes | — | The unique ID of the post |

desearch
  .xPostById({
    id: "1892527552029499853",
  })
  .then((result) => {
    console.log(result);
  });

Search X Posts by User

xPostsByUser

Search X (Twitter) posts by a specific user, with optional keyword filtering.

| Parameter | Type | Required | Default | Description | | --------- | -------- | -------- | ------- | ------------------------------------ | | user | string | Yes | — | User to search for | | query | string | No | '' | Advanced search query | | count | number | No | 10 | Number of tweets to retrieve (1–100) |

desearch
  .xPostsByUser({
    user: "elonmusk",
    query: "Whats going on with Bittensor",
    count: 20,
  })
  .then((result) => {
    console.log(result);
  });

Get Retweeters of a Post

xPostRetweeters

Retrieve the list of users who retweeted a specific post by its ID. Supports cursor-based pagination.

| Parameter | Type | Required | Default | Description | | --------- | ---------------- | -------- | ------- | ---------------------------------------- | | id | string | Yes | — | The ID of the post to get retweeters for | | cursor | string \| null | No | null | Cursor for pagination |

desearch
  .xPostRetweeters({
    id: "1982770537081532854",
  })
  .then((result) => {
    console.log(result);
  });

Get X Posts by Username

xUserPosts

Retrieve a user's timeline posts by their username. Fetches the latest tweets posted by that user. Supports cursor-based pagination.

| Parameter | Type | Required | Default | Description | | ---------- | ---------------- | -------- | ------- | --------------------------- | | username | string | Yes | — | Username to fetch posts for | | cursor | string \| null | No | null | Cursor for pagination |

desearch
  .xUserPosts({
    username: "elonmusk",
  })
  .then((result) => {
    console.log(result);
  });

Fetch User's Tweets and Replies

xUserReplies

Fetch tweets and replies posted by a specific user, with optional keyword filtering.

| Parameter | Type | Required | Default | Description | | --------- | -------- | -------- | ------- | -------------------------------------- | | user | string | Yes | — | The username of the user to search for | | count | number | No | 10 | The number of tweets to fetch (1–100) | | query | string | No | '' | Advanced search query |

desearch
  .xUserReplies({
    user: "elonmusk",
    count: 20,
    query: "latest news on AI",
  })
  .then((result) => {
    console.log(result);
  });

Retrieve Replies for a Post

xPostReplies

Fetch replies to a specific X (Twitter) post by its post ID.

| Parameter | Type | Required | Default | Description | | --------- | -------- | -------- | ------- | ------------------------------------- | | post_id | string | Yes | — | The ID of the post to search for | | count | number | No | 10 | The number of tweets to fetch (1–100) | | query | string | No | '' | Advanced search query |

desearch
  .xPostReplies({
    post_id: "1234567890",
    count: 20,
    query: "latest news on AI",
  })
  .then((result) => {
    console.log(result);
  });

Get X Trends

xTrends

Retrieve trending topics on X for a given location using its WOEID (Where On Earth ID).

| Parameter | Type | Required | Default | Description | | --------- | ---------------- | -------- | ------- | ----------------------------------------------------------- | | woeid | number | Yes | — | The WOEID of the location (e.g. 23424977 for United States) | | count | number \| null | No | 30 | The number of trends to return (30–100) |

desearch
  .xTrends({
    woeid: 23424977,
    count: 20,
  })
  .then((result) => {
    console.log(result);
  });

SERP Web Search

webSearch

SERP web search. Returns paginated web search results, replicating a typical search engine experience.

| Parameter | Type | Required | Default | Description | | --------- | -------- | -------- | ------- | --------------------------------------------------------- | | query | string | Yes | — | The search query string | | start | number | No | 0 | How many results to skip for pagination (0, 10, 20, etc.) |

desearch
  .webSearch({
    query: "latest news on AI",
    start: 10,
  })
  .then((result) => {
    console.log(result);
  });

Crawl a URL

webCrawl

Crawl a URL and return its content as plain text or HTML.

| Parameter | Type | Required | Default | Description | | --------- | ------------------ | -------- | -------- | ------------------------------------ | | url | string | Yes | — | URL to crawl | | format | 'html' \| 'text' | No | 'text' | Format of the content to be returned |

desearch
  .webCrawl({
    url: "https://en.wikipedia.org/wiki/Artificial_intelligence",
    format: "html",
  })
  .then((result) => {
    console.log(result);
  });

Links