# Empresas

> Liste, actualice y elimine empresas y sus contactos en su espacio de trabajo

Source: https://docs.graph8.com/es/developers/companies/

Gestione empresas en su espacio de trabajo de graph8: sus propios datos de CRM.

Las empresas se incorporan a su espacio de trabajo de forma automática cuando los contactos se guardan, enriquecen o importan: no es necesario crearlas manualmente. Cada contacto está vinculado a una empresa, y los registros de empresa se crean o actualizan a medida que ingresan los contactos. Estos endpoints ofrecen acceso completo de lectura y escritura sin costo en créditos.

> **Tip: ¿Busca nuevas empresas?**
> Estos endpoints solo devuelven empresas **que usted ya tiene**. Para descubrir nuevas empresas en la base de datos B2B global de graph8, utilice los endpoints de [Búsqueda](https://docs.graph8.com/developers/search/#search-companies).

---

## Listar empresas

`GET /companies`

Devuelve una lista paginada de empresas.

### Parámetros de consulta

| Parámetro | Tipo | Predeterminado | Descripción |
|-----------|------|----------------|-------------|
| `page` | integer | `1` | Número de página (índice desde 1) |
| `limit` | integer | `50` | Elementos por página (1-200) |
| `domain` | string | — | Filtrar por dominio (coincidencia exacta) |
| `industry` | string | — | Filtrar por industria (coincidencia parcial, sin distinción de mayúsculas) |
| `name` | string | — | Filtrar por nombre de empresa (coincidencia parcial, sin distinción de mayúsculas) |
| `employee_count_min` | integer | — | Número mínimo de empleados |
| `employee_count_max` | integer | — | Número máximo de empleados |
| `country` | string | — | Filtrar por país (coincidencia exacta) |
| `state` | string | — | Filtrar por estado (coincidencia exacta) |
| `city` | string | — | Filtrar por ciudad (coincidencia parcial, sin distinción de mayúsculas) |
| `description` | string | — | Filtrar por descripción de empresa (coincidencia parcial, sin distinción de mayúsculas) |
| `revenue_min` | integer | — | Ingresos anuales mínimos |
| `revenue_max` | integer | — | Ingresos anuales máximos |
| `founded_year_min` | integer | — | Año de fundación mínimo |
| `founded_year_max` | integer | — | Año de fundación máximo |
| `linkedin_followers_min` | integer | — | Mínimo de seguidores en LinkedIn |
| `linkedin_followers_max` | integer | — | Máximo de seguidores en LinkedIn |

Todos los filtros son opcionales y pueden combinarse. Cuando se proporcionan varios filtros, los resultados deben cumplirlos todos (lógica AND).

### Ejemplo

**cURL**

```bash
# Filter by industry
curl "https://be.graph8.com/api/v1/companies?industry=Technology&limit=10" \
  -H "Authorization: Bearer $API_KEY"

# Search by company name with employee count range
curl "https://be.graph8.com/api/v1/companies?name=acme&employee_count_min=100&employee_count_max=1000" \
  -H "Authorization: Bearer $API_KEY"

# Search by company description (useful for ICP identification)
curl "https://be.graph8.com/api/v1/companies?description=enterprise%20software" \
  -H "Authorization: Bearer $API_KEY"

# Filter by revenue range and founding year
curl "https://be.graph8.com/api/v1/companies?revenue_min=1000000&revenue_max=50000000&founded_year_min=2015" \
  -H "Authorization: Bearer $API_KEY"

# Filter by LinkedIn followers (social presence)
curl "https://be.graph8.com/api/v1/companies?linkedin_followers_min=1000&industry=SaaS" \
  -H "Authorization: Bearer $API_KEY"
```

**Python**

```python
# Filter by industry
response = requests.get(
    f"{BASE_URL}/companies",
    headers=HEADERS,
    params={"industry": "Technology", "limit": 10}
)
companies = response.json()

# Search by name with employee count range
response = requests.get(
    f"{BASE_URL}/companies",
    headers=HEADERS,
    params={"name": "acme", "employee_count_min": 100, "employee_count_max": 1000}
)

# Filter by revenue range and founding year
response = requests.get(
    f"{BASE_URL}/companies",
    headers=HEADERS,
    params={"revenue_min": 1000000, "revenue_max": 50000000, "founded_year_min": 2015}
)
```

**TypeScript**

```typescript
// Filter by industry
const response = await fetch(
  `${BASE_URL}/companies?industry=Technology&limit=10`,
  { headers: { Authorization: `Bearer ${API_KEY}` } }
);
const companies = await response.json();

// Search by name with employee count range
const filtered = await fetch(
  `${BASE_URL}/companies?name=acme&employee_count_min=100&employee_count_max=1000`,
  { headers: { Authorization: `Bearer ${API_KEY}` } }
);

// Filter by revenue range and founding year
const revenueFiltered = await fetch(
  `${BASE_URL}/companies?revenue_min=1000000&revenue_max=50000000&founded_year_min=2015`,
  { headers: { Authorization: `Bearer ${API_KEY}` } }
);
```

### Respuesta

```json
{
  "data": [
    {
      "id": 42,
      "name": "Acme Inc",
      "description": "Enterprise software company specializing in cloud solutions",
      "domain": "acme.com",
      "website": "https://acme.com",
      "industry": "Technology",
      "employee_count": "500",
      "revenue": "25000000",
      "founded_year": 2015,
      "city": "San Francisco",
      "state": "CA",
      "country": "US",
      "linkedin_url": "https://linkedin.com/company/acme",
      "linkedin_followers": "12500",
      "logo_url": "https://logo.clearbit.com/acme.com"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 87,
    "has_next": true
  }
}
```

---

## Obtener empresa

`GET /companies/{company_id}`

Devuelve información detallada sobre una empresa específica.

### Parámetros de ruta

| Parámetro | Tipo | Descripción |
|-----------|------|-------------|
| `company_id` | integer | ID de empresa |

### Ejemplo

**cURL**

```bash
curl "https://be.graph8.com/api/v1/companies/42" \
  -H "Authorization: Bearer $API_KEY"
```

**Python**

```python
response = requests.get(f"{BASE_URL}/companies/42", headers=HEADERS)
company = response.json()["data"]
```

**TypeScript**

```typescript
const response = await fetch(`${BASE_URL}/companies/42`, {
  headers: { Authorization: `Bearer ${API_KEY}` }
});
const { data: company } = await response.json();
```

### Respuesta

```json
{
  "data": {
    "id": 42,
    "name": "Acme Inc",
    "description": "Enterprise software company",
    "domain": "acme.com",
    "website": "https://acme.com",
    "logo_url": "https://logo.clearbit.com/acme.com",
    "phone": "+1-555-0200",
    "address": "123 Market St",
    "city": "San Francisco",
    "state": "CA",
    "country": "US",
    "zip": "94105",
    "founded_year": 2015,
    "employee_count": "500",
    "revenue": "25000000",
    "industry": "Technology",
    "industry_group": "Software",
    "linkedin_url": "https://linkedin.com/company/acme",
    "linkedin_followers": "12500",
    "facebook_url": null,
    "twitter_url": "https://twitter.com/acme",
    "crunchbase_url": null,
    "meta_data": null,
    "contact_count": 15,
    "created_at": "2026-01-10T08:00:00Z",
    "updated_at": "2026-02-20T16:45:00Z"
  }
}
```

### Errores

| Estado | Descripción |
|--------|-------------|
| `404` | Empresa no encontrada |

---

## Obtener contactos de la empresa

`GET /companies/{company_id}/contacts`

Devuelve los contactos asociados a una empresa.

### Parámetros de ruta

| Parámetro | Tipo | Descripción |
|-----------|------|-------------|
| `company_id` | integer | ID de empresa |

### Parámetros de consulta

| Parámetro | Tipo | Predeterminado | Descripción |
|-----------|------|----------------|-------------|
| `limit` | integer | `100` | Elementos por página (1-200) |
| `offset` | integer | `0` | Desplazamiento para paginación |

### Ejemplo

**cURL**

```bash
curl "https://be.graph8.com/api/v1/companies/42/contacts?limit=50" \
  -H "Authorization: Bearer $API_KEY"
```

**Python**

```python
response = requests.get(
    f"{BASE_URL}/companies/42/contacts",
    headers=HEADERS,
    params={"limit": 50}
)
contacts = response.json()["data"]
```

**TypeScript**

```typescript
const response = await fetch(`${BASE_URL}/companies/42/contacts?limit=50`, {
  headers: { Authorization: `Bearer ${API_KEY}` }
});
const { data: contacts } = await response.json();
```

### Respuesta

```json
{
  "data": [
    {
      "id": 1,
      "first_name": "Jane",
      "last_name": "Smith",
      "full_name": "Jane Smith",
      "work_email": "jane@acme.com",
      "job_title": "VP of Engineering",
      "seniority_level": "VP",
      "direct_phone": "+1-555-0100",
      "linkedin_url": "https://linkedin.com/in/janesmith",
      "city": "San Francisco",
      "state": "CA",
      "country": "US"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 50,
    "total": 15,
    "has_next": false
  }
}
```

---

## Actualizar empresa

`PATCH /companies/{company_id}`

Actualice uno o más campos de una empresa. Incluya únicamente los campos que desea modificar.

### Parámetros de ruta

| Parámetro | Tipo | Descripción |
|-----------|------|-------------|
| `company_id` | integer | ID de empresa |

### Cuerpo de la solicitud

Todos los campos son opcionales. Incluya solo los campos a actualizar.

| Campo | Tipo | Descripción |
|-------|------|-------------|
| `name` | string | Nombre de la empresa |
| `domain` | string | Dominio principal |
| `website` | string | URL del sitio web |
| `phone` | string | Número de teléfono |
| `address` | string | Dirección |
| `city` | string | Ciudad |
| `state` | string | Estado o provincia |
| `country` | string | País |
| `zip` | string | Código postal |
| `industry` | string | Industria |
| `employee_count` | integer | Número de empleados |
| `linkedin_url` | string | URL de la página de empresa en LinkedIn |

### Ejemplo

**cURL**

```bash
curl -X PATCH "https://be.graph8.com/api/v1/companies/42" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"industry": "Enterprise Software", "employee_count": 550}'
```

**Python**

```python
response = requests.patch(
    f"{BASE_URL}/companies/42",
    headers=HEADERS,
    json={"industry": "Enterprise Software", "employee_count": 550}
)
```

**TypeScript**

```typescript
const response = await fetch(`${BASE_URL}/companies/42`, {
  method: "PATCH",
  headers: {
    Authorization: `Bearer ${API_KEY}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({ industry: "Enterprise Software", employee_count: 550 })
});
```

### Respuesta

```json
{
  "data": {
    "updated": 1
  }
}
```

### Errores

| Estado | Descripción |
|--------|-------------|
| `400` | No se proporcionaron campos para actualizar |
| `404` | Empresa no encontrada |

---

## Eliminar empresa

`DELETE /companies/{company_id}`

Eliminación lógica de una empresa. La empresa se marca como eliminada, pero no se suprime de forma permanente.

### Parámetros de ruta

| Parámetro | Tipo | Descripción |
|-----------|------|-------------|
| `company_id` | integer | ID de empresa |

### Ejemplo

**cURL**

```bash
curl -X DELETE "https://be.graph8.com/api/v1/companies/42" \
  -H "Authorization: Bearer $API_KEY"
```

**Python**

```python
response = requests.delete(f"{BASE_URL}/companies/42", headers=HEADERS)
```

**TypeScript**

```typescript
const response = await fetch(`${BASE_URL}/companies/42`, {
  method: "DELETE",
  headers: { Authorization: `Bearer ${API_KEY}` }
});
```

### Respuesta

```json
{
  "data": {
    "deleted": true
  }
}
```

### Errores

| Estado | Descripción |
|--------|-------------|
| `404` | Empresa no encontrada |

> **Caution:**
> Eliminar una empresa no elimina sus contactos asociados. Los contactos permanecerán en su espacio de trabajo sin la asociación con la empresa.
