Skip to content
Get started

List tables in structured sheet

structured_sheets.tables.list(strstructured_sheet_id, TableListParams**kwargs) -> SyncCursorIDPage[TableResponse]
GET/v1/structured-sheets/{structured_sheet_id}/tables

List all tables extracted from the structured sheet. Only available when conversion status is 'completed'.

ParametersExpand Collapse
structured_sheet_id: str

The unique identifier of the structured sheet conversion.

after: Optional[str]

A cursor for pagination. Use the last_id from a previous response to fetch the next page of results.

limit: Optional[int]

Maximum number of tables to return per page.

formatint32
maximum100
minimum1
ReturnsExpand Collapse
class TableResponse:

Response representing a table extracted from a structured sheet.

This is returned from GET (retrieve) and list table endpoints. Table names use a composite format: {normalized_sheet_name}__{table_name}.

id: str

The unique identifier for this table.

created_at: datetime

The timestamp when this table was created.

formatdate-time
name: str

Composite table name: {normalized_sheet_name}__{table_name}. Uses lowercase snake_case. Aggregation tables end with '__aggregations'. Two special metadata tables exist per structured sheet: '__deeptable_workbook_metadata' (workbook provenance info) and '__deeptable_table_overview' (summary of all tables). Example: 'staffing__head_count' or 'staffing__head_count__aggregations'.

maxLength255
object: Literal["table"]

The object type, which is always 'table'.

sheet_name: str

The original Excel sheet name this table came from.

maxLength100
structured_sheet_id: str

The ID of the structured sheet this table belongs to.

type: Literal["relational", "aggregation", "tableless", "metadata"]

The type of table (relational, aggregation, tableless, or metadata).

One of the following:
"relational"
"aggregation"
"tableless"
"metadata"

List tables in structured sheet

import os
from deeptable import DeepTable

client = DeepTable(
    api_key=os.environ.get("DEEPTABLE_API_KEY"),  # This is the default and can be omitted
)
page = client.structured_sheets.tables.list(
    structured_sheet_id="ss_01kfxgjd94fn9stqm42nejb627",
)
page = page.data[0]
print(page.id)
{
  "data": [
    {
      "id": "tbl_01kfxgjd94fn9stqm45rqr2pnz",
      "created_at": "2026-01-15T10:35:00Z",
      "name": "staffing__head_count",
      "object": "table",
      "sheet_name": "Staffing",
      "structured_sheet_id": "ss_01kfxgjd94fn9stqm42nejb627",
      "type": "relational"
    },
    {
      "id": "tbl_02abc2def3ghjkmnpqrs4uvwxz",
      "created_at": "2026-01-15T10:35:00Z",
      "name": "staffing__head_count__aggregations",
      "object": "table",
      "sheet_name": "Staffing",
      "structured_sheet_id": "ss_01kfxgjd94fn9stqm42nejb627",
      "type": "aggregation"
    }
  ],
  "has_more": false,
  "object": "list",
  "first_id": "tbl_01kfxgjd94fn9stqm45rqr2pnz",
  "last_id": "tbl_02abc2def3ghjkmnpqrs4uvwxz"
}
Returns Examples
{
  "data": [
    {
      "id": "tbl_01kfxgjd94fn9stqm45rqr2pnz",
      "created_at": "2026-01-15T10:35:00Z",
      "name": "staffing__head_count",
      "object": "table",
      "sheet_name": "Staffing",
      "structured_sheet_id": "ss_01kfxgjd94fn9stqm42nejb627",
      "type": "relational"
    },
    {
      "id": "tbl_02abc2def3ghjkmnpqrs4uvwxz",
      "created_at": "2026-01-15T10:35:00Z",
      "name": "staffing__head_count__aggregations",
      "object": "table",
      "sheet_name": "Staffing",
      "structured_sheet_id": "ss_01kfxgjd94fn9stqm42nejb627",
      "type": "aggregation"
    }
  ],
  "has_more": false,
  "object": "list",
  "first_id": "tbl_01kfxgjd94fn9stqm45rqr2pnz",
  "last_id": "tbl_02abc2def3ghjkmnpqrs4uvwxz"
}