JSPM

  • Created
  • Published
  • Downloads 372187
  • Score
    100M100P100Q178548F
  • License MIT

Exa SDK for Node.js and the browser

Package Exports

  • exa-js
  • exa-js/package.json

Readme

Exa JavaScript SDK

npm version

The official JavaScript SDK for Exa, the web search API built for AI.

Documentation  |  Dashboard

Install

npm install exa-js

Quick Start

import Exa from "exa-js";

const exa = new Exa(process.env.EXA_API_KEY);

// Search the web
const result = await exa.search(
  "blog post about artificial intelligence",
  {
    type: "auto",
    contents: {
      highlights: true
    }
  }
);

// Get answers with citations
const { answer } = await exa.answer("What is the capital of France?");

Find webpages using natural language queries.

const result = await exa.search("interesting articles about space", {
  numResults: 10,
  includeDomains: ["nasa.gov", "space.com"],
  startPublishedDate: "2024-01-01",
  contents: {
    highlights: true
  }
});
const deepResult = await exa.search("Who leads OpenAI's safety team?", {
  type: "deep",
  systemPrompt: "Prefer official sources and avoid duplicate results",
  outputSchema: {
    type: "object",
    properties: {
      leader: { type: "string" },
      title: { type: "string" },
      sourceCount: { type: "number" }
    },
    required: ["leader", "title"]
  }
});

console.log(deepResult.output?.content);

Deep outputSchema modes:

  • type: "text": return plain text in output.content (optionally guided by description)
  • type: "object": return structured JSON in output.content

Deep search also supports systemPrompt to guide both the search process and the final returned result, for example by preferring certain sources, emphasizing novel findings, avoiding duplicates, or constraining output style.

For type: "object", deep search currently enforces:

  • max nesting depth: 2
  • max total properties: 10

Deep search variants:

  • deep: light mode
  • deep-reasoning: base reasoning mode

Contents

Get clean text, highlights, or summaries from any URL.

const { results } = await exa.getContents(["https://docs.exa.ai"], {
  text: true,
  highlights: true,
  summary: true,
});

Answer

const response = await exa.answer("What caused the 2008 financial crisis?");
console.log(response.answer);
for await (const chunk of exa.streamAnswer("Explain quantum computing")) {
  if (chunk.content) {
    process.stdout.write(chunk.content);
  }
}

TypeScript

Full TypeScript support with types for all methods.

import Exa from "exa-js";
import type { SearchResponse, RegularSearchOptions } from "exa-js";

Contributing

Pull requests welcome! For major changes, open an issue first.

License

MIT