> ## Documentation Index
> Fetch the complete documentation index at: https://deepline.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Pipedrive: Get Products

> List the products in the Pipedrive catalog, filtered by owner or update date. Includes SDK V2 examples, input constraints, response fields, and Deepline cost.

List the products in the Pipedrive catalog, filtered by owner or update date.

> [!NOTE]
>
> Tool ID: `pipedrive_get_products`

## Run this action

Use the TypeScript SDK for one call. Use `ctx.tools.execute(...)` inside a Play for durable calls, scheduled calls, or CSV processing.

```ts theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
import { Deepline } from 'deepline';

const deepline = await Deepline.connect();
const result = await deepline.tools.execute(
  'pipedrive_get_products',
  {
    "owner_id": 123,
    "ids": "example",
    "filter_id": 123
  },
);

console.log(result.toolResponse.raw);
```

### CLI

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline tools execute pipedrive_get_products --input '{
  "owner_id": 123,
  "ids": "example",
  "filter_id": 123
}' --json
```

## Example response

The SDK returns this shape at `result.toolResponse.raw`. The example values illustrate the response.

```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
{
  "data": {
    "success": true,
    "data": [
      {
        "id": 123,
        "name": "Example",
        "code": "example"
      }
    ],
    "additional_data": {
      "next_cursor": "cursor_123"
    }
  }
}
```

Use `deepline describe pipedrive_get_products --json` for the latest machine-readable contract.

## Input reference

Returns data about all products.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `payload.owner_id` | `integer` | No | — | If supplied, only products owned by the given user will be returned |
| `payload.ids` | `string` | No | — | Optional comma separated string array of up to 100 entity ids to fetch. If filter\_id is provided, this is ignored. If any of the requested entities do not exist or are not visible, they are not included in the response. |
| `payload.filter_id` | `integer` | No | — | The ID of the filter to use |
| `payload.cursor` | `string` | No | — | For pagination, the marker (an opaque string value) representing the first item on the next page |
| `payload.limit` | `integer` | No | — | For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed. |
| `payload.sort_by` | `"id" \| "name" \| "add_time" \| "update_time"` | No | `"id"` | The field to sort by. Supported fields: `id`, `name`, `add_time`, `update_time`. Allowed: `id`, `name`, `add_time`, `update_time`. |
| `payload.sort_direction` | `"asc" \| "desc"` | No | `"asc"` | The sorting direction. Supported values: `asc`, `desc`. Allowed: `asc`, `desc`. |
| `payload.updated_since` | `string` | No | — | If set, only products with an `update_time` later than or equal to this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z. |
| `payload.custom_fields` | `string` | No | — | Comma separated string array of custom fields keys to include. If you are only interested in a particular set of custom fields, please use this parameter for a smaller response. A maximum of 15 keys is allowed. |

<details>
  <summary>Show raw input schema</summary>

  ### Input JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Returns data about all products.",
    "properties": {
      "owner_id": {
        "type": "integer",
        "description": "If supplied, only products owned by the given user will be returned"
      },
      "ids": {
        "type": "string",
        "description": "Optional comma separated string array of up to 100 entity ids to fetch. If filter_id is provided, this is ignored. If any of the requested entities do not exist or are not visible, they are not included in the response."
      },
      "filter_id": {
        "type": "integer",
        "description": "The ID of the filter to use"
      },
      "cursor": {
        "type": "string",
        "description": "For pagination, the marker (an opaque string value) representing the first item on the next page"
      },
      "limit": {
        "type": "integer",
        "description": "For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed."
      },
      "sort_by": {
        "type": "string",
        "description": "The field to sort by. Supported fields: `id`, `name`, `add_time`, `update_time`.",
        "default": "id",
        "enum": [
          "id",
          "name",
          "add_time",
          "update_time"
        ]
      },
      "sort_direction": {
        "type": "string",
        "description": "The sorting direction. Supported values: `asc`, `desc`.",
        "default": "asc",
        "enum": [
          "asc",
          "desc"
        ]
      },
      "updated_since": {
        "type": "string",
        "description": "If set, only products with an `update_time` later than or equal to this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z."
      },
      "custom_fields": {
        "type": "string",
        "description": "Comma separated string array of custom fields keys to include. If you are only interested in a particular set of custom fields, please use this parameter for a smaller response. A maximum of 15 keys is allowed."
      }
    },
    "required": [],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

Standard tool result payload.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `result.data` | `object` | Yes | — | Provider response payload. |
| `result.data.success` | `boolean` | No | — | If the response is successful or not |
| `result.data.data` | `array` | No | — | Array containing data for all products |
| `result.data.data[].id` | `integer` | No | — | The ID of the product |
| `result.data.data[].name` | `string` | No | — | The name of the product |
| `result.data.data[].code` | `string` | No | — | The product code |
| `result.data.data[].unit` | `string` | No | — | The unit in which this product is sold |
| `result.data.data[].tax` | `number` | No | `0` | The tax percentage |
| `result.data.data[].is_deleted` | `boolean` | No | `false` | Whether this product will be marked as deleted or not |
| `result.data.data[].is_linkable` | `boolean` | No | `true` | Whether this product can be added to a deal or not |
| `result.data.data[].visible_to` | `1 \| 3 \| 5 \| 7` | No | — | Allowed: `1`, `3`, `5`, `7`. |
| `result.data.data[].owner_id` | `integer` | No | — | The ID of the Pipedrive user who owns the product |
| `result.data.data[].add_time` | `string` | No | — | The date and time when the product was added |
| `result.data.data[].update_time` | `string` | No | — | The date and time when the product was last updated |
| `result.data.data[].description` | `string` | No | — | The description of the product |
| `result.data.data[].category` | `string \| null` | No | — | The category of the product |
| `result.data.data[].custom_fields` | `record` | No | — | An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error. |
| `result.data.data[].billing_frequency` | `"one-time" \| "annually" \| "semi-annually" \| "quarterly" \| "monthly" \| "weekly"` | No | `"one-time"` | Only available in Growth and above plans How often a customer is billed for access to a service or product Allowed: `one-time`, `annually`, `semi-annually`, `quarterly`, `monthly`, `weekly`. |
| `result.data.data[].billing_frequency_cycles` | `integer \| null` | No | `null` | Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 |
| `result.data.data[].prices` | `array` | No | — | The prices of the product in different currencies |
| `result.data.data[].prices[].product_id` | `integer` | No | — | The ID of the product |
| `result.data.data[].prices[].price` | `number` | No | — | The price of the product |
| `result.data.data[].prices[].currency` | `string` | No | — | The currency of the price |
| `result.data.data[].prices[].cost` | `number` | No | — | The cost of the product |
| `result.data.data[].prices[].direct_cost` | `number \| null` | No | — | The direct cost of the product |
| `result.data.data[].prices[].notes` | `string` | No | — | The notes about the price |
| `result.data.additional_data` | `object` | No | — | Pagination related data |
| `result.data.additional_data.next_cursor` | `string` | No | — | The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. |
| `result.meta` | `object` | No | — | Additional response metadata (status, paging). |

<details>
  <summary>Show raw output schema</summary>

  ### Output JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Standard tool result payload.",
    "properties": {
      "data": {
        "type": "object",
        "description": "Provider response payload.",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "If the response is successful or not"
          },
          "data": {
            "type": "array",
            "description": "Array containing data for all products",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "description": "The ID of the product"
                },
                "name": {
                  "type": "string",
                  "description": "The name of the product"
                },
                "code": {
                  "type": "string",
                  "description": "The product code"
                },
                "unit": {
                  "type": "string",
                  "description": "The unit in which this product is sold"
                },
                "tax": {
                  "type": "number",
                  "description": "The tax percentage",
                  "default": 0
                },
                "is_deleted": {
                  "type": "boolean",
                  "description": "Whether this product will be marked as deleted or not",
                  "default": false
                },
                "is_linkable": {
                  "type": "boolean",
                  "description": "Whether this product can be added to a deal or not",
                  "default": true
                },
                "visible_to": {
                  "type": "number",
                  "enum": [
                    1,
                    3,
                    5,
                    7
                  ]
                },
                "owner_id": {
                  "type": "integer",
                  "description": "The ID of the Pipedrive user who owns the product"
                },
                "add_time": {
                  "type": "string",
                  "description": "The date and time when the product was added"
                },
                "update_time": {
                  "type": "string",
                  "description": "The date and time when the product was last updated"
                },
                "description": {
                  "type": "string",
                  "description": "The description of the product"
                },
                "category": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "The category of the product"
                },
                "custom_fields": {
                  "type": "object",
                  "description": "An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.",
                  "additionalProperties": true
                },
                "billing_frequency": {
                  "type": "string",
                  "description": "Only available in Growth and above plans How often a customer is billed for access to a service or product",
                  "default": "one-time",
                  "enum": [
                    "one-time",
                    "annually",
                    "semi-annually",
                    "quarterly",
                    "monthly",
                    "weekly"
                  ]
                },
                "billing_frequency_cycles": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "description": "Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208",
                  "default": null
                },
                "prices": {
                  "type": "array",
                  "description": "The prices of the product in different currencies",
                  "items": {
                    "type": "object",
                    "properties": {
                      "product_id": {
                        "type": "integer",
                        "description": "The ID of the product"
                      },
                      "price": {
                        "type": "number",
                        "description": "The price of the product"
                      },
                      "currency": {
                        "type": "string",
                        "description": "The currency of the price"
                      },
                      "cost": {
                        "type": "number",
                        "description": "The cost of the product"
                      },
                      "direct_cost": {
                        "type": [
                          "number",
                          "null"
                        ],
                        "description": "The direct cost of the product"
                      },
                      "notes": {
                        "type": "string",
                        "description": "The notes about the price"
                      }
                    },
                    "additionalProperties": false
                  }
                }
              },
              "required": [],
              "additionalProperties": false
            }
          },
          "additional_data": {
            "type": "object",
            "description": "Pagination related data",
            "properties": {
              "next_cursor": {
                "type": "string",
                "description": "The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned."
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "meta": {
        "type": "object",
        "description": "Additional response metadata (status, paging).",
        "additionalProperties": true
      }
    },
    "required": [
      "data"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Deepline cost

* Pricing model: `fixed` (per call).
* Estimated Deepline credits: `0` per pricing unit.
* Provider-native pricing may still exist outside Deepline credit billing.

## Related documentation

* [Pipedrive provider guide](https://deepline.com/docs/providers/pipedrive/guide.md)
* [SDK V2 quickstart](https://deepline.com/docs/sdk-v2/quickstart.md)
* [SDK reference](https://deepline.com/docs/sdk-v2/sdk-reference.md)
* [Run tools across a CSV](https://deepline.com/docs/sdk-v2/batch-csv.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.