# n8n

> Use Easyparser Amazon data in n8n workflows with the verified Easyparser node or the HTTP Request node, including credentials, a scheduled price check and Bulk API webhooks.

Source: https://docs.easyparser.com/integrations/n8n

Easyparser has a verified community node for [n8n](https://n8n.io/integrations/easyparser/). The Easyparser node runs Real-Time API operations, reads your account details and submits and retrieves Bulk API jobs from inside a workflow, using one saved credential.

The node is a wrapper over the [Real-Time API](/real-time-integration/overview), the [Bulk API](/bulk-integration/overview) and the [Account API](/account/account-api). It sends the same requests, so parameters, credit costs and response fields match those pages. This page covers installing the node, connecting your API key, an example workflow and the HTTP Request node alternative.

## Before you begin

You need:

- An n8n instance (n8n Cloud or self-hosted). Installing a community node requires the instance owner role.
- An Easyparser API key. Sign up at https://app.easyparser.com/signup (the free plan includes 100 credits per month and needs no credit card), then copy your key from **Account > Plan** at https://app.easyparser.com/account/plan.

Wherever a step below shows `YOUR_API_KEY`, paste your key.

## Install the node and connect your key

### Step 1: Open the nodes panel

Sign in to n8n, open a workflow in the editor and click **+** in the top right to open the nodes panel.

### Step 2: Install the Easyparser node

Search for `Easyparser`, select the node marked with the verified badge and click **Install**. After the instance owner installs it, every user on the instance can add it to workflows.

On self-hosted n8n you can also install the package by name: go to **Settings > Community Nodes**, click **Install** and enter `n8n-nodes-easyparser`.

### Step 3: Create the Easyparser API credential

Add the Easyparser node to your workflow. Under **Credential to connect with**, select **Create new credential**, choose **Easyparser API** and paste `YOUR_API_KEY` into the **API Key** field. Click **Save**.

n8n tests the credential with a free [Account API](/account/account-api) request. The same credential works for every operation: the node sends the key as the `api_key` query parameter to the Real-Time API and the Account API, and as the `api-key` header to the Bulk API and the Data Service.

### Step 4: Select an operation

Choose an **Operation**, set **Amazon Domain** (for example `.com`) and fill in the input field the operation needs, such as **ASIN or URL**. Click **Execute step** to test it.

> **INFO:** The nodes panel installs the version that n8n has verified, which can be older than the latest release of `n8n-nodes-easyparser` on npm. Similar Products was added in version 0.3.0. If your operation list does not show it, your instance runs an earlier version.

## Node operations

Each real-time operation sends one request per input item and is charged like the matching Real-Time API request. See [Credit Consumption](/essentials/credit-consumption) for the full rules.

| Node operation | API operation | Input fields | Credits |
|---|---|---|---|
| Product Detail | [`DETAIL`](/real-time-integration/detail) | ASIN or URL | 1, or 2 with A+ content |
| Product Offers | [`OFFER`](/real-time-integration/offer) | ASIN or URL | 1 per page, max 5 pages |
| Search | [`SEARCH`](/real-time-integration/search) | Search Keyword or URL | 1 per page, max 5 pages |
| Sales Analysis History | [`SALES_ANALYSIS_HISTORY`](/real-time-integration/sales-analysis-and-history) | ASIN or URL | 5 plus 1 per month of history, max 17 |
| Best Sellers Rank | [`BEST_SELLERS_RANK`](/real-time-integration/best-sellers-rank) | ASIN or URL | 1 |
| Package Dimension | [`PACKAGE_DIMENSION`](/real-time-integration/package-dimension) | ASIN or URL | 1 |
| Product Lookup | [`PRODUCT_LOOKUP`](/real-time-integration/product-lookup) | Identifier Type, Product Identifier | 1 |
| Seller Profile | [`SELLER_PROFILE`](/real-time-integration/seller-profile) | Seller ID or Storefront URL | 1 |
| Seller Products | [`SELLER_PRODUCTS`](/real-time-integration/seller-products) | Seller ID or Storefront URL | 1 per page, max 5 pages |
| Seller Feedback | [`SELLER_FEEDBACK`](/real-time-integration/seller-feedback) | Seller ID or Storefront URL | 1 per page, max 5 pages |
| Similar Products | [`SIMILAR_PRODUCTS`](/real-time-integration/similar-products) | ASIN or URL, Similar Product Limit | 1, 6 or 11 for 10, 50 or 100 results |
| Account Info | [Account API](/account/account-api) | None | Free |
| Bulk Submit | [Bulk Service Request](/bulk-integration/bulk-service-request) | Bulk Operation Type, Bulk Amazon Domain, Callback URL, Payload (JSON) | Per accepted item |
| Bulk Get Result | [Data Service Request](/bulk-integration/data-service-request) | Query ID | Free |

Optional request parameters are under **Additional Options**, for example **Language**, **Currency**, **Address ID**, **A+ Content**, **Min Page** and **Max Page**, **Sort By**, the offer condition filters and **Operation Version**. They map to the parameters on each operation's Request page. Leave **Operation Version** at `0` to use the current Live version.

The node returns the raw API response as one output item per input item, with the same fields as the operation's Response page, for example `result.detail.title` for Product Detail.

### Errors

**Fail on API Error** is on by default. A response with `request_info.success: false`, or a failed Bulk result, then stops the node with an error, even when the HTTP status is `200`. To keep the failed item and continue with the next ones, use the n8n node setting **On Error**. Turn **Fail on API Error** off only if your workflow checks `request_info.success` itself.

The node sets a 60-second timeout on every request and does not retry.

> **DANGER:** Each execution of a real-time operation is a paid request. If you enable the n8n **Retry On Fail** setting, or run the node inside a loop, every attempt can consume credits. Use the free **Account Info** operation to check `credits_remaining` before large runs.

## Example workflow: scheduled price check

This workflow checks the Buy Box price of one product every 6 hours and sends an alert when it drops below a target price. Each run costs 1 credit.

![Animation: a Schedule trigger runs the Easyparser Product Detail node, an If node checks that the price is below 40 and a notification node sends the alert](https://docs.easyparser.com/media/animations/docs-n8n-price-check.jpg)

*Animation: a Schedule trigger runs the Easyparser Product Detail node, an If node checks that the price is below 40 and a notification node sends the alert* ([MP4](https://docs.easyparser.com/media/animations/docs-n8n-price-check.mp4))

### Step 1: Add a Schedule Trigger

Add a **Schedule Trigger** node and set the interval to every 6 hours.

### Step 2: Add the Easyparser node

Add the Easyparser node with these settings:

| Field | Value |
|---|---|
| Credential to connect with | Your Easyparser API credential |
| Operation | Product Detail |
| Amazon Domain | `.com` |
| ASIN or URL | `B0CJB6V2L5` |

The node sends the same request as this Real-Time API call:

```bash
curl --location 'https://realtime.easyparser.com/v1/request?api_key=YOUR_API_KEY&platform=AMZ&operation=DETAIL&domain=.com&asin=B0CJB6V2L5'
```

### Step 3: Compare the price

Add an **If** node. In the condition, set the value to this expression, choose the Number operation **is less than** and enter your target price, for example `40`:

```
{{ Number($json.result.detail.buybox_winner.price.value) }}
```

`price.value` is returned as a string such as `"45.00"`, so convert it with `Number()` before you compare it.

### Step 4: Send the alert

Connect a Slack, Gmail, Telegram or other notification node to the **true** output of the If node. To include product data in the message, use expressions such as `{{ $('Easyparser').item.json.result.detail.title }}` and `{{ $('Easyparser').item.json.result.detail.buybox_winner.price.raw }}`.

To check several products, put a node that outputs one item per ASIN (for example Google Sheets or a Code node) before the Easyparser node and map **ASIN or URL** to the ASIN field with an expression. The node sends one request, and charges credits, per item.

## Bulk API with a webhook

For large or scheduled jobs, submit them with **Bulk Submit** and receive a webhook in n8n when each query finishes.

### Step 1: Create the webhook workflow

Create a workflow that starts with a **Webhook** node. Set **HTTP Method** to `POST` and keep **Respond** at **Immediately**, so n8n answers with HTTP `200` right away. Easyparser expects a `200` response within 3 seconds and retries a failed delivery once, 5 minutes later. Publish (activate) the workflow and copy its production URL.

### Step 2: Submit the job

In another workflow, add the Easyparser node with **Operation** set to **Bulk Submit**, choose **Bulk Operation Type** and **Bulk Amazon Domain**, paste the webhook production URL into **Callback URL** and enter the input values in **Payload (JSON)**. For Detail:

```json
{ "asins": ["B0CJB6V2L5", "B0F25371FH"] }
```

The payload keys are the same as in the Bulk API `payload` object, listed on [Bulk Service Request](/bulk-integration/bulk-service-request). The node wraps your payload in a single group with `platform`, `operation`, `domain` and `callback_url`, and sends it as the request array.

### Step 3: Read the accepted IDs

The submit response lists one query ID per accepted input value at `data.accepted[].results[].id`. Rejected values are returned in `data.invalid`, `data.failed`, `data.insufficient_credit` and `data.rate_limit_exceeded`. Only accepted values are charged, and a partly accepted job does not fail the node, so check those arrays instead of resubmitting the whole job.

### Step 4: Fetch each result

Easyparser sends one webhook per query. The webhook body is the query record with top-level fields such as `id`, `status`, `operation`, `domain` and `callback_url`. It does not contain the parsed data. In the webhook workflow, add the Easyparser node with **Operation** set to **Bulk Get Result** and set **Query ID** to `{{ $json.body.id }}`.

Bulk Get Result is free. It returns the query record in `data`: check `data.status` first, then read the parsed result from `data.json_result.result`. The node fetches the result once from the Data Service and does not wait or poll. If a query is still `pending`, fetch the same ID again later instead of submitting the job again.

> **WARNING:** Bulk results are kept for at most 24 hours and may be removed earlier. Store each result, for example in a database or spreadsheet node, as soon as you fetch it.

## Use the HTTP Request node instead

You can call the API without the Easyparser node, for example to use a parameter or marketplace the node does not offer. Add an **HTTP Request** node with these settings:

| Field | Value |
|---|---|
| Method | `GET` |
| URL | `https://realtime.easyparser.com/v1/request` |
| Authentication | Generic Credential Type, then Query Auth |
| Query Auth credential | Name `api_key`, value `YOUR_API_KEY` |
| Send Query Parameters | On |

Add the request parameters under **Query Parameters**:

| Name | Value |
|---|---|
| `platform` | `AMZ` |
| `operation` | `DETAIL` |
| `domain` | `.com` |
| `asin` | `B0CJB6V2L5` |

Every Real-Time API parameter goes in the query string. A request usually takes several seconds, so set **Options > Timeout** to at least `60000` milliseconds. Check `request_info.success` in the response, because an error can come back with HTTP status `200`. See [Common Request Fields](/real-time-integration/common-required-request-fields) for the shared parameters.

For the Bulk API and the Data Service, use Header Auth instead, with the header name `api-key` and the value `YOUR_API_KEY`. Send Bulk jobs as `POST https://bulk.easyparser.com/v1/bulk` with a JSON array body, as described on [Bulk Service Request](/bulk-integration/bulk-service-request).

## Use it in AI agent workflows

The Easyparser node can be connected as a tool to the n8n AI Agent node. The agent then calls the operation you configured and is charged like any other request. Set fixed values, or let the model fill fields such as **ASIN or URL**, and set **Max Iterations** on the AI Agent node to limit how many tool calls it can make in one run.

## Limitations

These are limits of the n8n node, not of the API. Use the HTTP Request node or the [Real-Time API](/real-time-integration/overview) directly when you need more.

- The node accepts 21 marketplace domains. `.eg` is not in its list. See [Supported Marketplaces](/essentials/supported-marketplaces) for every `domain` the API supports.
- **Bulk Submit** sends one group per execution: one operation and one domain. To submit several groups in one request, use the HTTP Request node.
- **Bulk Submit** does not offer Similar Products.
- **Bulk Get Result** fetches one query ID per item and does not poll. Build a Wait node loop if you need to retry pending results.
- Use either the **Offer Filters** text field or the separate offer condition options. The node rejects a request that sets both.

## Related

- [MCP Server](/integrations/mcp-server)
- [Real-Time API overview](/real-time-integration/overview)
- [Bulk API overview](/bulk-integration/overview)
- [Credit Consumption](/essentials/credit-consumption)
- [Supported Marketplaces](/essentials/supported-marketplaces)
- [Account API](/account/account-api)
