Skip to content

TS Client for Dune Analytics' officially supported API.

Notifications You must be signed in to change notification settings

duneanalytics/ts-dune-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

039a741 · Feb 19, 2025

History

78 Commits
Sep 19, 2024
Jan 17, 2025
Sep 1, 2024
Sep 1, 2024
Oct 5, 2022
Sep 30, 2022
Feb 19, 2025
Sep 1, 2024
Nov 12, 2024
Sep 19, 2024
Sep 19, 2024
Sep 20, 2024
Nov 12, 2024

Repository files navigation

Styled With Prettier Build

Dune Client TS

This NPM package implements all the basic routes defined in the Dune API Docs. It also introduces a convenience method refresh which combines executeQuery, getExecutionStatus and gettExecutionResults in a way that makes it nearly trivial to fetch query execution results.

Install the package

yarn add @duneanalytics/client-sdk
import { QueryParameter, DuneClient, RunQueryArgs } from "@duneanalytics/client-sdk";
const { DUNE_API_KEY } = process.env;

const client = new DuneClient(DUNE_API_KEY ?? "");
const queryId = 1215383;
const opts: RunQueryArgs = {
  queryId,
  query_parameters: [
    QueryParameter.text("TextField", "Plain Text"),
    QueryParameter.number("NumberField", 3.1415926535),
    QueryParameter.date("DateField", "2022-05-04 00:00:00"),
    QueryParameter.enum("ListField", "Option 1"),
  ],
};

client
  .runQuery(opts)
  .then((executionResult) => console.log(executionResult.result?.rows));

// should look like
// [
//    {
//      date_field: "2022-05-04 00:00:00.000",
//      list_field: "Option 1",
//      number_field: "3.1415926535",
//      text_field: "Plain Text",
//    },
//  ]

Custom API

const { DUNE_API_KEY } = process.env;

const client = new DuneClient(DUNE_API_KEY ?? "");
const results = await client.custom.getResults({
  username: "your_username", 
  slug: "endpoint-slug"
  // optional arguments: see `GetResultParams`
  limit: 100,
});

Note also that the client has methods executeQuery, getExecutionStatus, getExecutionResult and cancelExecution

Check out this Demo Project!