---
title: "Extract Odoo ERP data with the Data Platform connector"
description: "The Odoo connector extracts data from any Odoo ERP instance: contacts, CRM leads, sales orders, invoices, products, inventory, HR, projects, and more"
url: https://docs.ovhcloud.com/es/guides/public-cloud/data-platform/connectors-sources-odoo
lang: es
lastUpdated: 2026-09-14
---
> For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/es/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/es/llms-full.txt.

# Extract Odoo ERP data with the Data Platform connector

## Objective

The Odoo connector extracts data from any Odoo ERP instance: contacts, CRM leads, sales orders, invoices, products, inventory, HR, projects, and more.

**26 predefined models** covering 9 domains + a **custom model** endpoint for any Odoo model + a **model fields** endpoint for schema introspection.

The connector returns **raw JSON** from the Odoo JSON-RPC API. The platform automatically flattens nested objects into columns and stores the result in the lakehouse. No manual schema definition needed.

**Compatible with Odoo 14–19.**

## 1. Get an API Key

1. Log in to your Odoo instance
2. Click your **avatar** (top right) > **My Profile**
3. Go to the **Account Security** tab
4. Click **New API Key**
5. Enter a description (e.g., `data-platform-connector`)
6. Click **Generate Key**
7. **Copy the key immediately**: it is shown only once

:::info
**Odoo Online:** API access requires the **Custom plan**. See [Odoo Pricing](https://www.odoo.com/pricing).
:::

## 2. Configure Credentials

| Field        | Required | Description                                                              |
| ------------ | -------- | ------------------------------------------------------------------------ |
| **URL**      | Yes      | Your Odoo instance URL (e.g., `https://mycompany.odoo.com`)              |
| **Login**    | Yes      | Your Odoo login email                                                    |
| **API Key**  | Yes      | The API key generated above                                              |
| **Database** | No       | Auto-detected for `*.odoo.com` URLs. Required for self-hosted instances. |

## 3. Available Endpoint Types

### models: Predefined Models

26 commonly-used Odoo models, grouped by domain:

| Domain        | Models                                                     |
| ------------- | ---------------------------------------------------------- |
| **Contacts**  | res.partner                                                |
| **CRM**       | crm.lead, crm.stage, crm.team                              |
| **Sales**     | sale.order, sale.order.line                                |
| **Purchases** | purchase.order, purchase.order.line                        |
| **Invoicing** | account.move, account.move.line, account.journal           |
| **Products**  | product.template, product.product, product.category        |
| **Inventory** | stock.picking, stock.move, stock.warehouse, stock.location |
| **HR**        | hr.employee, hr.department                                 |
| **Projects**  | project.project, project.task                              |
| **System**    | res.users, res.company, res.country, res.currency          |

**Parameters:**

| Parameter     | Type   | Required | Description                                      |
| ------------- | ------ | -------- | ------------------------------------------------ |
| Model         | select | Yes      | Odoo model to extract                            |
| Fields Filter | tags   | No       | Specific fields to include (empty = all)         |
| Domain Filter | text   | No       | Odoo domain filter in JSON (empty = all records) |
| Max Items     | number | No       | Max records to extract (empty = all)             |

### custom\_model: Any Odoo Model

For models not in the predefined list (e.g., `helpdesk.ticket`, `mrp.production`, `fleet.vehicle`).

| Parameter     | Type   | Required | Description                                         |
| ------------- | ------ | -------- | --------------------------------------------------- |
| Model Name    | text   | Yes      | Full technical model name (e.g., `helpdesk.ticket`) |
| Fields Filter | tags   | No       | Specific fields to include                          |
| Domain Filter | text   | No       | Domain filter in JSON                               |
| Max Items     | number | No       | Max records                                         |

### model\_fields: Schema Introspection

Returns field definitions for any model (name, type, required, help text, relation). Useful to discover available fields before extracting data.

| Parameter  | Type | Required | Description                            |
| ---------- | ---- | -------- | -------------------------------------- |
| Model Name | text | Yes      | Model to inspect (e.g., `res.partner`) |

## 4. Add an Odoo source on Data Platform

1. In the Data Platform **Connectors**, find **Odoo** in the source store and click **Select**.
2. Fill in the connection fields from [step 2](#2-configure-credentials), **URL**, **Login**, **API Key**, and (for self-hosted) **Database**.
3. Click **Connect** to verify the credentials. The connector authenticates via JSON-RPC and resolves your Odoo `uid`.
4. Click **Add an Endpoint**, choose `models`, `custom_model`, or `model_fields` from the dropdown, and fill in the parameters that endpoint requires (e.g. **Model**, optional **Fields Filter**, optional **Domain Filter**, optional **Max Items**).
5. Repeat step 4 for every additional endpoint you want to ingest in this source. Each becomes a separate table in the lakehouse.
6. Name the source and click **Create**.

:::warning
The **technical name** cannot be changed after the source is created. It is used when opening the source via the [Data Platform SDK](https://docs.ovhcloud.com/es/guides/public-cloud/data-platform/landing-page-developers-python-sdk.md).
:::

## 5. Quick Example: Extract Contacts

1. **Endpoint**: `models`
2. **Model**: `res.partner` (Contacts)
3. **Fields Filter**: `name, email, phone, is_company, city, country_id`
4. **Max Items**: `100` (or empty to extract all)

The connector returns raw JSON from the Odoo API. The platform automatically flattens nested objects and stores the result in the lakehouse.

## 6. Domain Filter Syntax

The domain filter uses Odoo's **Polish (prefix) notation**. Enter it as a JSON array:

```json
[["state", "=", "sale"], ["amount_total", ">", 1000]]
```

Common operators: `=`, `!=`, `>`, `<`, `>=`, `<=`, `in`, `not in`, `like`, `ilike`

**OR conditions** use the `|` prefix:

```json
["|", ["type", "=", "lead"], ["type", "=", "opportunity"]]
```

Leave empty `[]` to extract all records.

## 7. Best Practices

### Use the fields filter

Without a filter, Odoo returns **all fields**: some models have 200+ fields. Use the fields filter to keep only what you need, especially for large models like `res.partner`.

### Start with max\_items

Set `max_items` to 10 or 100 to test quickly. Remove the limit once satisfied.

### Use model\_fields to discover fields

The `model_fields` endpoint returns the complete schema for any model. Use it to find field names, types, and relationships before setting up extraction.

### Stages and reference tables

Extract `crm.stage`, `account.journal`, `product.category` as reference tables. Join them with main data on the stage/journal/category ID fields.

## 8. Known Limitations

- **Model availability depends on installed apps.** Models like `crm.lead` require the CRM app, `sale.order` requires Sales, etc. Use `custom_model` to test if a model exists on your instance.
- **Some fields require specific user groups.** For example, `project.project.stage_id` requires the "Use Stages on Project" group. If you get a permission error, use `fields_filter` to exclude restricted fields.
- **Odoo Online API access** requires the Custom plan. See [Odoo Pricing](https://www.odoo.com/pricing).

:::info
For detailed technical information (auth internals, full endpoint reference, pagination, rate limits, output format, domain filter reference, version compatibility, limitations), see the [Odoo Technical Reference](https://docs.ovhcloud.com/es/guides/public-cloud/data-platform/connectors-sources-odoo-technical-reference.md).
:::

## Go further

If you need training or technical assistance to implement our solutions, contact your sales representative or click on [this link](https://www.ovhcloud.com/es-es/professional-services/) to get a quote and ask our Professional Services experts for a custom analysis of your project.

Ask questions, give your feedback and interact directly with the team building the Data Platform on the dedicated [Discord channel](https://discord.gg/ovhcloud).

If you need support with your OVHcloud services, create a request in our [Help Centre](https://help.ovhcloud.com/csm?id=csm_get_help).

Join our [community of users](https://community.ovhcloud.com/).
