<!-- BusyBot node reference — https://busybot.net/tools/baserow/ -->

> Node: Baserow (`baserow`) · Action · v1
> Category: Data & Storage · Credentials: Baserow API (`baserowApi`)
> Updated: 2026-08-16

# Baserow

> Perform CRUD operations on Baserow database rows

## Overview

Baserow is an open-source online database tool and Airtable alternative. This tool interacts with the Baserow REST API to create, read, update, and delete rows in database tables. It supports filtering, sorting, searching, and pagination when listing rows. Baserow uses JWT authentication obtained via username/password exchange. Field names in API responses are mapped between internal field IDs (field_N) and human-readable names automatically.

**Category:** Data & Storage  
**Tool Name:** `baserow`  
**Version:** 1

**Appearance:** Icon: `si-baserow` | Color: `#1F8FFF`

## Node Type

**Action** — processes input items and produces output

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **Baserow API** credentials.
See the [Credentials Guide](https://busybot.net/credentials/baserow-api/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Row | `row` |

### Operations

| Operation | Value | Description |
|-----------|-------|-------------|
| Create | `create` | Create a row |
| Delete | `delete` | Delete a row |
| Get | `get` | Retrieve a row |
| Get Many | `getAll` | Retrieve many rows |
| Update | `update` | Update a row |

### Parameters

#### Row: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Data to Send | `options` | No | `defineBelow` | Whether to insert the input data this node receives in the new row. |
| | | | | Options: `autoMapInputData` (use when node input properties match destination column names), `defineBelow` (set the value for each destination column) |
| Inputs to Ignore | `string` | No | — | List of input properties to avoid sending, separated by commas. Leave empty to send all properties. _(shown when Data to Send is `autoMapInputData`)_ |
| Fields to Send | `fixedCollection` | No | `{}` | Explicit field ID and value pairs to send. _(shown when Data to Send is `defineBelow`)_ |
| — Field ID | `string` | No | — | The numeric field ID. Find via GET /api/database/fields/table/{tableId}/. Example: for field_123, enter "123". |
| — Field Value | `string` | No | — | The value to set for this field. |

#### Row: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Row ID | `string` | Yes | — | ID of the row to delete. |

#### Row: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Row ID | `string` | Yes | — | ID of the row to return. |

#### Row: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. Accepts 1–100. _(shown when Return All is `false`)_ |
| Options | `collection` | No | `{}` | Additional options for filtering, sorting, and searching. |
| — Filters | `fixedCollection` | No | `{}` | Filter rows based on comparison operators. |
| — — Field | `string` | No | — | Field ID (numeric) to filter on. Find via GET /api/database/fields/table/{tableId}/. |
| — — Filter Operator | `options` | No | `equal` | Operator to compare field and value with. |
| | | | | Options: `contains`, `contains_not`, `date_after` (field after this date, YYYY-MM-DD), `date_before`, `date_equal`, `date_equals_month`, `date_equals_today`, `date_equals_year`, `date_not_equal`, `equal`, `filename_contains`, `higher_than`, `empty` (field is empty), `not_empty`, `boolean` (boolean field is true), `link_row_has_not`, `link_row_has`, `lower_than`, `not_equal`, `single_select_equal`, `single_select_not_equal` |
| — — Value | `string` | No | — | Value to compare to. |
| — Filter Type | `options` | No | `AND` | How to combine multiple filters. Only applies when two or more filters are provided. Defaults to AND. |
| | | | | Options: `AND` (rows must match all provided filters), `OR` (rows only have to match one of the filters) |
| — Search Term | `string` | No | — | Text to match (can be in any column). |
| — Sorting | `fixedCollection` | No | `{}` | Set the sort order of the result rows. |
| — — Field | `string` | No | — | Field ID (numeric) to sort by. Find via GET /api/database/fields/table/{tableId}/. |
| — — Direction | `options` | No | — | Sort direction, either ascending or descending. |
| | | | | Options: empty string (ASC — ascending), `-` (DESC — descending) |

#### Row: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Row ID | `string` | Yes | — | ID of the row to update. |
| Data to Send | `options` | No | `defineBelow` | Whether to insert the input data this node receives in the new row. |
| | | | | Options: `autoMapInputData` (use when node input properties match destination column names), `defineBelow` (set the value for each destination column) |
| Inputs to Ignore | `string` | No | — | List of input properties to avoid sending, separated by commas. Leave empty to send all properties. _(shown when Data to Send is `autoMapInputData`)_ |
| Fields to Send | `fixedCollection` | No | `{}` | Explicit field ID and value pairs to send. _(shown when Data to Send is `defineBelow`)_ |
| — Field ID | `string` | No | — | The numeric field ID. Find via GET /api/database/fields/table/{tableId}/. Example: for field_123, enter "123". |
| — Field Value | `string` | No | — | The value to set for this field. |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Database ID | `string` | Yes | — | ID of the Baserow database. Find by calling GET /api/applications/ and filtering by type "database". |
| Table ID | `string` | Yes | — | ID of the table within the database. Find by calling GET /api/database/tables/database/{databaseId}/. |
| Max Concurrency | `number` | No | `10` | Maximum number of items to process concurrently. Accepts 1–100. |

## Output Data

Unlike most connectors, this node **replaces** the item JSON rather than merging into it — the output item carries the Baserow row (or the delete confirmation) and nothing else. Binary data on the input item is forwarded.

Baserow stores columns internally as `field_123`. On the way out, those keys are translated back to your human-readable column names, so a row arrives as `{ "id": 1, "order": "1.00", "Name": "…", "Notes": "…" }`. The same translation runs in reverse for **Data to Send** = `autoMapInputData`, which is why auto-mapping works with plain column names; **Fields to Send** takes the numeric field ID instead.

| Operation | Output |
|-----------|--------|
| `create` | One item per input item, carrying the created row including its new `id`. |
| `get` | One item per input item, carrying the requested row. |
| `update` | One item per input item, carrying the row as it stands after the patch. |
| `delete` | One item per input item, carrying `success: true`. |
| `getAll` | **Fans out** — one output item per row returned. A query that matches nothing emits one item, which is the input item passed through unchanged. |

Reference columns downstream by their Baserow name, e.g. `{{ $json.Name }}` or `{{ $json.id }}`.

## Usage Examples

- Create a new row in a Baserow table
- Retrieve all rows from a Baserow table with filters
- Update a row by ID in Baserow
- Delete a row from a Baserow table
- Search rows across all columns in a Baserow table

## Example Configuration

Create a row from the incoming item's own properties:

```json
{
  "type": "baserow",
  "parameters": {
    "resource": "row",
    "operation": "create",
    "databaseId": "12345",
    "tableId": "67890",
    "dataToSend": "autoMapInputData",
    "inputsToIgnore": "id,_error"
  }
}
```

Create a row with explicit field IDs:

```json
{
  "type": "baserow",
  "parameters": {
    "resource": "row",
    "operation": "create",
    "databaseId": "12345",
    "tableId": "67890",
    "dataToSend": "defineBelow",
    "fieldsUi": {
      "fieldValues": [
        { "fieldId": "123", "fieldValue": "{{ $json.name }}" },
        { "fieldId": "124", "fieldValue": "{{ $json.email }}" },
        { "fieldId": "125", "fieldValue": "active" }
      ]
    }
  }
}
```

Fetch one row by ID:

```json
{
  "type": "baserow",
  "parameters": {
    "resource": "row",
    "operation": "get",
    "databaseId": "12345",
    "tableId": "67890",
    "rowId": "{{ $json.rowId }}"
  }
}
```

List rows matching two filters, newest first:

```json
{
  "type": "baserow",
  "parameters": {
    "resource": "row",
    "operation": "getAll",
    "databaseId": "12345",
    "tableId": "67890",
    "returnAll": false,
    "limit": 50,
    "additionalOptions": {
      "filterType": "AND",
      "filters": {
        "fields": [
          { "field": "125", "operator": "equal", "value": "active" },
          { "field": "126", "operator": "date_after", "value": "2026-01-01" }
        ]
      },
      "order": {
        "fields": [
          { "field": "126", "direction": "-" }
        ]
      }
    }
  }
}
```

Search every column for a term and return the whole table:

```json
{
  "type": "baserow",
  "parameters": {
    "resource": "row",
    "operation": "getAll",
    "databaseId": "12345",
    "tableId": "67890",
    "returnAll": true,
    "additionalOptions": {
      "search": "{{ $json.query }}"
    }
  }
}
```

Update selected columns on a row:

```json
{
  "type": "baserow",
  "parameters": {
    "resource": "row",
    "operation": "update",
    "databaseId": "12345",
    "tableId": "67890",
    "rowId": "{{ $json.id }}",
    "dataToSend": "defineBelow",
    "fieldsUi": {
      "fieldValues": [
        { "fieldId": "125", "fieldValue": "archived" }
      ]
    }
  }
}
```

Delete a row:

```json
{
  "type": "baserow",
  "parameters": {
    "resource": "row",
    "operation": "delete",
    "databaseId": "12345",
    "tableId": "67890",
    "rowId": "{{ $json.id }}"
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Perform CRUD operations on rows in Baserow open-source database tables with filtering, sorting, and pagination support.