---
title: Get Structured Data
description: Extract structured data from a table or list in the opened tab
---

Turn the tables and bullet lists on the active tab into rows of data you can filter, sort and save.

## Try it

## What it does

Get Structured Data finds the tables and lists you point at with **DOM Selector** and returns one item per table or list found. You can select a table or list itself, a container that holds several, or a cell or list entry inside one (its table or list is used).

**Mode** decides what to look for: **Auto** (tables and lists), **Table** only, or **List** only (bulleted and numbered lists).

**Tables**: each row becomes an object keyed by the column headers, for example `{ "Name": "Ada", "Role": "Engineer" }`.

* Headers come from the table's header row. When the table has none, **Table first row is header** (on by default) uses the first row as headers.
* A column with no header is named `col_1`, `col_2`, and so on.
* Empty rows are skipped.

**Lists**: with **List Format** = **Text**, each entry becomes `{ "item": "…" }`. With **Key/Value**, an entry like `Color: Blue` becomes `{ "key": "Color", "value": "Blue" }`. Entries without a separator (`:`, `=` or `-`) stay as `{ "item": "…" }`.

Cells and entries are read as plain text, with extra spaces removed. Tables or lists with no rows are left out.

## When to use it

* Copy a price table, a schedule or a ranking from a page into a spreadsheet or a database.
* Read a specification list ("Weight: 2 kg", "Color: Blue") as key and value pairs.
* For data that is not in a table or list (cards, tiles), use [Get All HTML](/nodes/extension/getallhtml/) with [HTML Extract](/nodes/builtin/datatransformation/html-extract/).

## Inputs and settings

**DOM Selector**: click the crosshair button in the field and click any cell of the table (or any entry of the list); you do not need to hit the table's edge. To read everything in an area, pick the container instead, or type a selector such as `main` or `table`.

## Outputs

Each run returns a list of items with these fields:

```json title="Shape of an output item"
[
  {
    "sourceType": "…",
    "selector": "…",
    "items": []
  }
]
```

`sourceType` is `table` or `list`. The rows are inside `items`. To get one workflow item per row, follow with [Split Out](/nodes/builtin/datatransformation/splitout/) on `items`.

## Dependencies and credentials

None. This node needs no connection and has no slots for other nodes.

## Example workflow

1. Open a page with a pricing table and run the workflow from a [Hotkey](/nodes/builtin/trigger/hotkey/) trigger.
2. Add **Get Structured Data** with **DOM Selector** set to a cell of the table and **Mode** = **Table**.
3. Add [Split Out](/nodes/builtin/datatransformation/splitout/) with **Field To Split Out** = `items`, so each row becomes an item.
4. Add [CSV](/nodes/builtin/datatransformation/csv/) with **Operation** = **Build from items**, then [Save as File](/nodes/builtin/datatransformation/saveasfile/) with **File type** = `csv`.

## Common issues

* **"No structured data found".** No table or list with content was found at **DOM Selector**, or **Mode** excludes it (a list in **Table** mode, for example). Check the selector with **Ping**, try **Auto**, or select a larger container.
* **The first data row is used as headers.** The table has no header row and **Table first row is header** is on. Turn it off; columns are then named `col_1`, `col_2`…
* **Menus and footers show up as lists.** In **Auto** or **List** mode on a large container, every list is read. Select the exact table or list, or use **Table** mode.
* **The node fails outside the extension.** This node runs in the browser extension; install it or run the workflow from the extension.

## Recipes with this node

## Related nodes

* [Split Out](/nodes/builtin/datatransformation/splitout/): one item per row.
* [CSV](/nodes/builtin/datatransformation/csv/): export the rows.
* [HTML Extract](/nodes/builtin/datatransformation/html-extract/): data that is not in a table or list.
* [Get All Text](/nodes/extension/getalltext/): the plain text of the page.