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

easy-airtable-api

v0.0.15

Published

An easy way to connect to Airtable via their API.

Downloads

38

Readme

Easy Airtable API

I created this as a simpler alternative to the official Airtable Node.js library.

This library makes it easier to work with Airtable by providing TypeScript support and straightforward functions for reading and writing records.

While this is still an early project and needs more work, you can already use it to fetch and update records in your Airtable bases.

I'm already using it in production for many projects.

It also supports generating TypeScript definitions for your Airtable tables which is super useful.

Install

npm install easy-airtable-api
bun add easy-airtable-api

How to Use

Get a Single Record

import { getRecord } from 'easy-airtable-api';

type Fields = {
  Name?: string;
  Notes?: string;
  Status?: string;
};

const record = await getRecord<Fields>({
  apiKey: 'apiKey',
  baseId: 'baseId',
  tableNameOrId: 'tableNameOrId',
  recordId: 'recordId',
});

Get Multiple Records

import { getRecords } from 'easy-airtable-api';

type Fields = {
  Name?: string;
  Notes?: string;
  Status?: string;
};

const records = await getRecords<Fields>({
  apiKey: 'apiKey',
  baseId: 'baseId',
  tableNameOrId: 'tableNameOrId',
  options: {
    maxRecords: 500,
  },
});

Update a Single Record

import { updateRecord } from 'easy-airtable-api';

type Fields = {
  Name?: string;
  Status?: string;
};

const record = await updateRecord<Fields>({
  apiKey: 'apiKey',
  baseId: 'baseId',
  tableNameOrId: 'tableNameOrId',
  recordId: 'recordId',
  options: {
    typecast: true,
  },
  fields: {
    Name: 'New Name',
    Status: 'Active',
  },
});

Update Multiple Records

import { updateRecords } from 'easy-airtable-api';

type Fields = {
  Name?: string;
  Status?: string;
};

const records = await updateRecords<Fields>({
  apiKey: 'apiKey',
  baseId: 'baseId',
  tableNameOrId: 'tableNameOrId',
  records: [
    {
      id: 'recordId1',
      fields: {
        Name: 'New Name 1',
        Status: 'Active',
      }
    },
    {
      id: 'recordId2',
      fields: {
        Name: 'New Name 2',
        Status: 'Inactive',
      }
    }
  ],
  options: {
    typecast: true,
  }
});

Generate TypeScript Definitions

import { generateTypeScriptDefinitions } from 'easy-airtable-api';

const types = await generateTypeScriptDefinitions({
  apiKey: 'apiKey',
  baseId: 'baseId',
  tableNameOrId: 'tableNameOrId',
});

Changelog

0.0.15

  • Type generation wraps type keys in quotations
  • Fix various type generation issues
  • added createRecords and createRecord methods

0.0.14

  • Exported generateTypeScriptDefinitions function.

0.0.13

  • Added generateTypeScriptDefinitions function to generate TypeScript definitions for Airtable tables.

0.0.12

  • Reverted making apiKey, baseId, tableId default to undefined
  • Added option to customize delay between requests via options.requestInterval

0.0.11

  • Make apiKey, baseId, tableId default to undefined #12
  • Missing .js in utils import #13

0.0.10

  • Fixed deleteRecords implementation errors.

0.0.9

  • Implemented the deleteRecords method.

0.0.8

  • Implemented the updateRecords method.
  • Implemented the updateRecordsUpsert method.
  • Added a delay when executing many requests in succession.
  • Fixed the updateRecord and updateRecords methods to return correct field types.

0.0.7

  • Added all available options for updateRecords.
  • Modified the getRecords function to automatically retrieve all records.

0.0.6

  • Added all available options for updateRecord.
  • Corrected the path to index.d.ts.

0.0.5

  • Discontinued CJS build, supporting only ESM for now.

0.0.4

  • Exported all available methods.
  • Restructured the lib folder to eliminate duplicate types.

0.0.3

  • Supported both ESM & CJS builds.
  • Enhanced server error handling.
  • Introduced generic field types.

0.0.2

  • Developed basic request functions to retrieve or update records.
  • Added type definitions for requests and fields.
  • Conducted basic tests to verify the core functionality of the library.

0.0.1

  • Initial project setup with no real functionality implemented.