---
title: API CRUD GET | Datasquirel docs
description: Fetch records from a Datasquirel table via the API
page_title: GET
page_description: Read one or more records from a table using the Datasquirel REST API or npm package.
---

## Overview

Use the GET endpoint to fetch records from any table in your database. You can retrieve all records, a single record by ID, or a filtered and paginated subset.

## npm Package

```javascript
import datasquirel from "@moduletrace/datasquirel";

const result = await datasquirel.crud.get({
    dbName: "my_database",
    tableName: "users",
    apiKey: process.env.DATASQUIREL_API_KEY,
});

// result.payload contains the array of records
console.log(result.payload);
```

### Get a Single Record by ID

```javascript
const result = await datasquirel.crud.get({
    dbName: "my_database",
    tableName: "users",
    targetId: 42,
    apiKey: process.env.DATASQUIREL_API_KEY,
});
```

### Filtered and Paginated Query

```javascript
const result = await datasquirel.crud.get({
    dbName: "my_database",
    tableName: "posts",
    apiKey: process.env.DATASQUIREL_API_KEY,
    query: {
        limit: 10,
        page: 1,
        order: { field: "created_at", strategy: "DESC" },
        query: {
            is_published: { value: 1, equality: "=" },
        },
    },
});
```

## Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `dbName` | `string` | Yes | The database slug to query |
| `tableName` | `string` | Yes | The table to read from |
| `apiKey` | `string` | No | API key. Falls back to the `DATASQUIREL_API_KEY` environment variable |
| `targetId` | `string \| number` | No | Fetch a single record by its `id` |
| `query` | `object` | No | Filter, pagination, and ordering options (see below) |

### Query Options

| Option | Type | Description |
|--------|------|-------------|
| `limit` | `number` | Maximum number of records to return |
| `page` | `number` | Page number for pagination (1-based) |
| `offset` | `number` | Number of records to skip |
| `order` | `{ field, strategy }` | Sort by a field — `strategy` is `"ASC"` or `"DESC"` |
| `selectFields` | `string[]` | Only return these fields |
| `omitFields` | `string[]` | Exclude these fields from the result |
| `query` | `object` | Field-level filters — each key is a field name with a `value` and `equality` |
| `fullTextSearch` | `object` | Full-text search across specified fields |
| `join` | `array` | JOIN conditions against other tables |

## REST API

```
GET /api/v1/crud/{dbName}/{tableName}
GET /api/v1/crud/{dbName}/{tableName}/{id}
```

**Headers:**
```
Authorization: Bearer YOUR_API_KEY
```

## Response

```json
{
    "success": true,
    "payload": [
        { "id": 1, "name": "Alice", "email": "alice@example.com" },
        { "id": 2, "name": "Bob", "email": "bob@example.com" }
    ]
}
```

A successful response has `success: true` and a `payload` array. A single-record fetch (by `targetId`) returns `payload` as an object.
