# Companies

> API version: v1

Companies covered by the API: listed companies with SEC EDGAR data. Search by ticker prefix or company name, filter by exchange, page through the results.

`GET /api/v1/companies`

Requires an API key in the `X-Api-Key` header.

## Parameters

| Name | In | Type | Required | Description |
|---|---|---|---|---|
| `search` | query | string | no | Ticker prefix or part of the company name. |
| `exchange` | query | string | no | Exchange, for example `NASDAQ` or `NYSE`. |
| `page` | query | integer | no | Page number, starting at 1. |
| `per_page` | query | integer | no | Companies per page. Default 50, maximum 100. |

## Request

**curl**

```bash
curl "https://studyingstocks.com/api/v1/companies?search=cisco" \
  -H "X-Api-Key: $STUDYING_STOCKS_API_KEY"
```

**Python**

```python
import os
import requests

response = requests.get("https://studyingstocks.com/api/v1/companies", params={"search": "cisco"}, headers={"X-Api-Key": os.environ["STUDYING_STOCKS_API_KEY"]})
response.raise_for_status()
print(response.json())
```

**JavaScript**

```javascript
const response = await fetch("https://studyingstocks.com/api/v1/companies?search=cisco", {
  headers: { "X-Api-Key": process.env.STUDYING_STOCKS_API_KEY },
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
```

## Response

A page of companies.

```json
{
    "data": [
        {
            "symbol": "CSCO",
            "name": "Cisco Systems, Inc.",
            "exchange": "Nasdaq",
            "cik": "0000858877",
            "sic": "3576",
            "sic_description": "Industrial and Commercial Machinery and Computer Equipment",
            "currency": "USD",
            "first_period_end": "2017-07-29",
            "last_period_end": "2026-07-25",
            "data_updated_at": "2026-10-15T02:00:00Z"
        }
    ],
    "meta": {
        "page": 1,
        "per_page": 50,
        "total": 1,
        "last_page": 1,
        "source": "SEC EDGAR",
        "api_version": "v1",
        "generated_at": "2026-10-16T02:00:00Z"
    }
}
```

### Response fields

| Field | Type | Description |
|---|---|---|
| `data[].symbol` | string | Ticker symbol. |
| `data[].name` | string or null | Company name. |
| `data[].exchange` | string or null | Listing exchange. |
| `data[].cik` | string or null | SEC Central Index Key, ten digits. |
| `data[].sic` | string or null | SEC Standard Industrial Classification code. |
| `data[].sic_description` | string or null | Name of the SIC major group (the first two digits of the code). |
| `data[].currency` | string | Reporting currency of every monetary value. |
| `data[].first_period_end` | string or null | End date of the oldest period we have. |
| `data[].last_period_end` | string or null | End date of the latest period we have. |
| `data[].data_updated_at` | string or null | When we last synchronized this company with SEC EDGAR. |
| `meta.source` | string | Where the data comes from: always SEC EDGAR (calculated items are derived from it). |
| `meta.api_version` | string |  |
| `meta.generated_at` | string | When this response was generated (responses are cached for a few hours). |
| `meta.page` | integer |  |
| `meta.per_page` | integer |  |
| `meta.total` | integer |  |
| `meta.last_page` | integer |  |

## Errors

| Status | Code | When |
|---|---|---|
| 401 | [`unauthenticated`](https://studyingstocks.com/developers/errors#unauthenticated) | Missing or invalid API key. |
| 403 | [`subscription_inactive`](https://studyingstocks.com/developers/errors#subscription_inactive) | The Premium subscription behind the key is not active. |
| 422 | [`invalid_parameter`](https://studyingstocks.com/developers/errors#invalid_parameter) | A query parameter is invalid. |
| 429 | [`rate_limited`](https://studyingstocks.com/developers/errors#rate_limited) | Rate limit reached. |
| 500 | [`server_error`](https://studyingstocks.com/developers/errors#server_error) | Something went wrong on our side. |

All errors have the [same shape](https://studyingstocks.com/developers/errors).
