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

# Introduction

> Access real-time acquisition signals with advanced filtering, sorting, and pagination

## Welcome to the Acquisition Signals API

The Acquisition Signals API provides access to comprehensive, real-time acquisition signals aggregated from across the web. Our platform continuously monitors and collects acquisition activity, giving you up-to-date information on M\&A deals, acquirers, and market trends.

<Card title="Acquisition Signals Endpoint" icon="bullseye-arrow" href="/api-reference/acquisition-signals/endpoint/get">
  View the complete OpenAPI specification
</Card>

## Count Mode

You can get the total number of results matching any filter combination **without consuming credits** by adding `count=true` to your request. This returns an empty `data` array with full pagination metadata, including `totalCount`.

```bash theme={null}
curl -X GET "https://www.trysignalbase.com/api/v2/signals/acquisitions?count=true&countries=US,GB&date_preset=last_90d" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Response:**

```json theme={null}
{
  "success": true,
  "data": [],
  "pagination": {
    "currentPage": 1,
    "totalPages": 8,
    "totalCount": 152,
    "hasNextPage": true,
    "hasPreviousPage": false
  },
  "meta": {
    "endpoint": "signals.acquisitions",
    "creditsUsed": 0
  }
}
```

<Tip>Use count mode to preview how many results match your filters before fetching actual data. This is useful for building filter UIs, showing result counts, or validating queries — all at zero credit cost.</Tip>

## Key Features

* **Real-time Signals**: Acquisition signals are aggregated continuously from web sources
* **Advanced Filtering**: Filter by countries, categories, subcategories, date ranges, and search terms
* **Numeric Range Filters**: Filter by amount, employee count, and founded year
* **Flexible Sorting**: Sort by date, amount, or employee count
* **Verification Status**: Filter signals by verified, unverified, or pending status
* **Pagination Support**: Efficiently retrieve large datasets with up to 100 results per page
* **Rich Response Data**: Detailed company information, acquisition amounts, and acquirer data
* **Credit-based Usage**: Transparent credit consumption per API call

## Company fields and acquirer object

The acquired company uses **`companyCountry`** and **`companySubcategory`** on the root of each signal. The nested **`acquiringCompany`** object uses the same naming (**`companyCountry`**, **`companySubcategory`**) so all company HQ fields are consistent across the API. See [Company fields in signal responses](/enums#company-fields-in-signal-responses).

## Service Level

* **Rate Limit**: Based on your subscription tier
* **Uptime**: 99% guaranteed uptime
* **Data Freshness**: Real-time aggregation ensures up-to-date signals
* **Maximum Results**: Up to 100 results per page

## Authentication

All API endpoints require authentication using a Bearer token passed in the Authorization header.

```bash theme={null}
curl -X GET "https://www.trysignalbase.com/api/v2/signals/acquisitions?page=1&limit=20" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

## Matching by Company URL (Recommended)

If you know a company's website domain or LinkedIn page, query by URL instead of by name. Name search is fuzzy and can return lookalikes (`Novartis` also matches `Novartis UK`); URL identifiers match exactly one company.

```bash theme={null}
# By website domain
curl -X GET "https://www.trysignalbase.com/api/v2/signals/acquisitions?company_domain=novartis.com" \
  -H "Authorization: Bearer YOUR_API_KEY"

# By LinkedIn company page
curl -X GET "https://www.trysignalbase.com/api/v2/signals/acquisitions?company_linkedin_url=linkedin.com/company/novartis" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Accepted input formats.** URL identifiers are normalized before matching, so equivalent variants return the same results:

* `company_domain`: `novartis.com`, `www.novartis.com`, `https://www.novartis.com/`, `https://novartis.com/any/path` — scheme, `www.`, port, path and trailing slash are ignored. Values that can't be reduced to a domain return `400`.
* `company_linkedin_url`: `linkedin.com/company/novartis`, `https://www.linkedin.com/company/Novartis/` — `http`/`https`, `www.` and trailing slash are ignored, the slug is case-insensitive. URLs that aren't LinkedIn *company* pages (e.g. personal `/in/` profiles) return `400`.

**Strict matching.** When a URL identifier is provided, the API never falls back to fuzzy name matching: if no company matches, the result is empty. Identifiers combine with `AND` — `company_domain=novartis.com&company_name=Acme` returns empty because they disagree.

**Match confidence.** Every result row includes `match_confidence`:

| Value   | Meaning                                                |
| ------- | ------------------------------------------------------ |
| `exact` | Matched via `company_domain` or `company_linkedin_url` |
| `fuzzy` | Matched via `company_name` partial match only          |
| `none`  | No company identifier was part of the query            |

## Query Parameters

### Pagination

| Parameter | Type    | Default | Description                 |
| --------- | ------- | ------- | --------------------------- |
| `page`    | integer | 1       | Page number                 |
| `limit`   | integer | 20      | Results per page (max: 100) |

### Date Filters

| Parameter     | Type   | Description                                                                                                  |
| ------------- | ------ | ------------------------------------------------------------------------------------------------------------ |
| `dateFrom`    | string | Filter by date from (ISO-8601 string)                                                                        |
| `dateTo`      | string | Filter by date to (ISO-8601 string)                                                                          |
| `date_preset` | string | Relative date shorthand — takes precedence over `dateFrom`/`dateTo`. See [Date Presets](/enums#date-presets) |

### Company Filters

| Parameter              | Type   | Description                                                                                                                                                |
| ---------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `countries`            | string | Comma-separated country codes (e.g., `US,GB,DE`)                                                                                                           |
| `categories`           | string | Pipe-separated company categories / industries                                                                                                             |
| `subcategories`        | string | Comma-separated subcategory IDs (e.g., `ai,fintech,saas`)                                                                                                  |
| `industry`             | string | Comma-separated exact industry names                                                                                                                       |
| `company_domain`       | string | **Recommended.** Acquired company website domain (e.g. `novartis.com`). Strict match — see [Matching by company URL](#matching-by-company-url-recommended) |
| `company_linkedin_url` | string | **Recommended.** Acquired company LinkedIn URL (e.g. `linkedin.com/company/novartis`). Strict match                                                        |
| `company_name`         | string | Search by acquired company name (partial match, fuzzy). Prefer the URL identifiers above                                                                   |
| `search`               | string | Free-text search across company name & industry                                                                                                            |

### Numeric Range Filters

| Parameter            | Type    | Description                                             |
| -------------------- | ------- | ------------------------------------------------------- |
| `amount_min`         | integer | Minimum acquisition amount in whole dollars (not cents) |
| `amount_max`         | integer | Maximum acquisition amount in whole dollars (not cents) |
| `employee_count_min` | integer | Minimum company employee count                          |
| `employee_count_max` | integer | Maximum company employee count                          |
| `founded_year_min`   | integer | Minimum company founded year                            |
| `founded_year_max`   | integer | Maximum company founded year                            |

### Acquisition-specific Filters

| Parameter             | Type   | Description                                                                                                                           |
| --------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------- |
| `currency`            | string | Filter by currency (ISO 4217 code). Almost all acquisitions are `USD`; a few are `EUR`. See [Currency Values](/enums#currency-values) |
| `verification_status` | string | Comma-separated statuses: `verified`, `unverified`, `pending`                                                                         |
| `acquiring_company`   | string | Search by acquiring company name (partial match)                                                                                      |

### Sorting

| Parameter    | Type   | Default       | Description                                                            |
| ------------ | ------ | ------------- | ---------------------------------------------------------------------- |
| `sort_by`    | string | `occurred_at` | Sort field: `occurred_at`, `discovered_at`, `amount`, `employee_count` |
| `sort_order` | string | `desc`        | Sort direction: `asc` or `desc`                                        |

## Response Structure

All successful responses follow this structure:

```json theme={null}
{
  "success": true,
  "data": [...],
  "pagination": {
    "currentPage": 1,
    "totalPages": 10,
    "totalCount": 200,
    "hasNextPage": true,
    "hasPreviousPage": false
  },
  "meta": {
    "endpoint": "signals.acquisitions",
    "creditsUsed": 1
  }
}
```

## Error Handling

The API returns standard HTTP status codes:

* **200**: Success
* **401**: Unauthorized - Invalid or missing API key
* **429**: Rate limit exceeded
* **500**: Internal server error

Error responses include:

```json theme={null}
{
  "success": false,
  "error": "Error message description"
}
```

## Example Usage

### Filter by Date Preset and Country

```bash theme={null}
curl -X GET "https://www.trysignalbase.com/api/v2/signals/acquisitions?date_preset=last_90d&countries=US,GB" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

### Filter by Amount and Acquiring Company

```bash theme={null}
curl -X GET "https://www.trysignalbase.com/api/v2/signals/acquisitions?amount_min=10000000&acquiring_company=Google" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

### Filter by Subcategory with Sorting

```bash theme={null}
curl -X GET "https://www.trysignalbase.com/api/v2/signals/acquisitions?subcategories=ai&sort_by=amount&sort_order=desc" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

### Combined Filters

```bash theme={null}
curl -X GET "https://www.trysignalbase.com/api/v2/signals/acquisitions?date_preset=last_30d&countries=US&verification_status=verified&sort_by=discovered_at&limit=50" \
  -H "Authorization: Bearer YOUR_API_KEY"
```
