> For the complete documentation index, see [llms.txt](https://developer.parvenu.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.parvenu.io/enrichments/technology-stack/list-lookup.md).

# List Lookup

Look up which tools every company website in a Parvenu list runs. Asynchronous, writes results back into the list.

<mark style="color:green;">`POST`</mark> `/technology_stack_list`

{% hint style="info" %}
This is an **asynchronous** endpoint. It returns a job acknowledgement, not data. Poll `/check_list_status` until the list reports `done`, then fetch the rows with `/download_list`. Costs **0.2 credits per unique domain that returns technologies**. A domain with no technologies found is free, and a row with no website is free.
{% endhint %}

Use this to look up every company in a list in one call, rather than looping over Individual Lookup per row.

The run looks up each unique domain once, however many contacts from that company are in the list, and writes the same result to every one of their rows. Twenty contacts at one company cost 0.2 credits, not 4.

{% hint style="info" %}
The lookup reads the company website on each row. Rows with no website are skipped free. If your rows are missing websites, run [Website Enrichment](/enrichments/website-enrichment.md) on the list first.
{% endhint %}

**Headers**

| Name         | Value              |
| ------------ | ------------------ |
| Content-Type | `application/json` |

**Body**

| Name              | Type    | Description                                                                                                                                                                                 |
| ----------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `api_key`         | string  | Your API Key.                                                                                                                                                                               |
| `listname`        | string  | Name of the existing Parvenu list to enrich.                                                                                                                                                |
| `view`            | string  | Optional. Which rows of the list to process. `all` (default) processes every contact in the list; `verified` restricts the run to contacts whose email address is verified.                 |
| `processing_mode` | string  | Optional. `blank_only` (default) only fills rows whose `company_tech_stack` is empty; `all` re-runs every selected row; `first_10` processes only the first 10 rows, useful for a test run. |
| `filter_stack`    | array   | Optional. The column filters to apply before the run, in the same shape the leads table uses. Rows the filters exclude are left untouched.                                                  |
| `search`          | string  | Optional. Free-text search applied before the run, narrowing the rows the same way the table's search box does.                                                                             |
| `sort_by`         | string  | Optional. Column to sort the selected rows by.                                                                                                                                              |
| `sort_dir`        | string  | Optional. Sort direction, `asc` or `desc`.                                                                                                                                                  |
| `max_rows`        | integer | Optional. Caps how many rows the run processes. When the selection is larger than the cap the acknowledgement reports `truncated: true`.                                                    |
| `saved_view`      | string  | Optional. Name of a saved view on this list. Runs only on the contacts in that view. Don't combine with `view`, `filter_stack` or `search`.                                                 |

**Saved views.** To run only on the contacts in a saved view, send its name as `saved_view`. See [List Saved Views](/manage-lists/list-saved-views.md).

**What it writes**

| Column               | Description                                                                                                                                                                                                                                                            |
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `company_tech_stack` | The technologies found on the company's website, as a list of tool names (strings), e.g. `["google-analytics", "hubspot", "webflow"]`. The Technology Stack column in the app shows them as one line of text; `/download_list` returns `company_tech_stack` as a list. |
| `log`                | One line per processed row recording the result and the credits charged.                                                                                                                                                                                               |

**Response**

The acknowledgement reports the job's `status` and `job_id`, `list_name`, `view`, `rows_selected` (rows left after the view, filters and search), `rows_fetched` (rows read for the run), `max_rows` and `truncated`. See [Response Format](/getting-started/response-format.md) for the fields every endpoint returns.

`credits_estimated` is the worst case: every unique domain in the selection returning technologies. The real charge is usually lower, because domains with nothing found are free. `credits_used` on the acknowledgement is always `0`. The run itself is charged as the domains resolve.

**Example**

{% tabs %}
{% tab title="Input" %}

```json
{
  "api_key": "your_api_key",
  "listname": "My list",
  "view": "all",
  "processing_mode": "blank_only"
}
```

{% endtab %}

{% tab title="Output" %}

```json
{
  "status": "queued",
  "job_id": "your_job_id",
  "list_name": "My list",
  "rows_selected": 5,
  "rows_fetched": 5,
  "view": "all",
  "max_rows": 5000,
  "truncated": false,
  "credits_estimated": 1.0,
  "credits_used": 0,
  "message": "Looking up the technology stack for 5 unique domains across 5 rows in My list (0.2 credits per domain that returns technologies)."
}
```

{% endtab %}
{% endtabs %}

`job_id` is shown as a placeholder.

**Retrieving results**

* [Check List Status](/get-enrichment-results/check-list-status.md)
* [Download List Data](/get-enrichment-results/download-list-data.md)
