---
title: "Search and list companies (paged)."
url: "https://developer.argaam.com/apis/market-data-layer-api-production-v1/versions/ca86b5b0-4709-486f-b41b-f80ad96b0d25/operations/getCompanies"
---

> Full API specification: https://developer.argaam.com/apis/market-data-layer-api-production-v1/versions/ca86b5b0-4709-486f-b41b-f80ad96b0d25.md

# Search and list companies (paged).

`GET` `/api/v1.1/companies`

Operation ID: `getCompanies`

Returns a paginated, searchable list of all companies available in the Argaam database. **Search** using the `?q=` parameter — it matches against company name (both Arabic and English) and ticker symbol. **Filter by market** using `?marketIds=1,2,4` (comma-separated). **Pagination** is controlled by `?page=` (1-based) and `?pageSize=`. Each result record contains: `CompanyID`, `CompanyNameEn`, `CompanyNameAr`, `MarketName`, `Ticker`, and `LogoURL`. **Tip:** Once you have a company ID, retrieve its full profile with `GET /companies/{id}/profile`. To look up by ticker symbol use `GET /companies/by-symbol/{symbol}`.

## Query parameters

- `lang` (integer, int32, optional) - Language ID: `1` = English (default), `2` = Arabic. Defaults to `1`.
- `q` (string, optional) - Search term (optional). Matched against name and ticker.
- `page` (integer, int32, optional) - Page number (1-based). Default: `1`. Defaults to `1`.
- `pageSize` (integer, int32, optional) - Records per page. Default: `20`. Defaults to `20`.
- `userId` (integer, int32, optional) - Optional user ID for personalized watchlist data. Default: `0`. Defaults to `0`.
- `marketIds` (string, optional) - Comma-separated market IDs to filter by (e.g. `1,2`). Default: all markets.

## Responses

- `200` - Success

## OpenAPI definition

```yaml
openapi: 3.0.1
info:
  title: Market Data Layer API
  version: v1.1
servers:
  - url: https://api.argaam.com
    description: Argaam API Gateway (Production)
paths:
  /api/v1.1/companies:
    get:
      tags:
        - Companies
      parameters:
        - name: lang
          in: query
          description: "Language ID: `1` = English (default), `2` = Arabic. Defaults to
            `1`."
          schema:
            type: integer
            format: int32
            default: 1
          example: 1
        - name: q
          in: query
          description: Search term (optional). Matched against name and ticker.
          schema:
            type: string
            default: ""
          example: ""
        - name: page
          in: query
          description: "Page number (1-based). Default: `1`. Defaults to `1`."
          schema:
            type: integer
            format: int32
            default: 1
          example: 1
        - name: pageSize
          in: query
          description: "Records per page. Default: `20`. Defaults to `20`."
          schema:
            type: integer
            format: int32
            default: 20
          example: 20
        - name: userId
          in: query
          description: "Optional user ID for personalized watchlist data. Default: `0`.
            Defaults to `0`."
          schema:
            type: integer
            format: int32
            default: 0
          example: 0
        - name: marketIds
          in: query
          description: "Comma-separated market IDs to filter by (e.g. `1,2`). Default: all
            markets."
          schema:
            type: string
            default: ""
          example: "1"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ApiV1Response2"
      summary: Search and list companies (paged).
      description: "Returns a paginated, searchable list of all companies available\r

        in the Argaam database.\r

        \            \r

        **Search** using the `?q=` parameter — it matches against company\r

        name (both Arabic and English) and ticker symbol.\r

        \            \r

        **Filter by market** using `?marketIds=1,2,4` (comma-separated).\r

        \            \r

        **Pagination** is controlled by `?page=` (1-based) and `?pageSize=`.\r

        \            \r

        Each result record contains: `CompanyID`, `CompanyNameEn`,\r

        `CompanyNameAr`, `MarketName`, `Ticker`, and `LogoURL`.\r

        \            \r

        **Tip:** Once you have a company ID, retrieve its full profile with\r

        `GET /companies/{id}/profile`. To look up by ticker symbol use\r

        `GET /companies/by-symbol/{symbol}`."
      operationId: getCompanies
security:
  - ApiKeyAuth: []
components:
  schemas:
    ApiV1Response2:
      type: object
      properties:
        success:
          type: boolean
          description: Always true for successful responses.
        apiVersion:
          type: string
          description: Semantic API version (e.g., "1.0.0").
          nullable: true
        timestamp:
          type: string
          description: UTC timestamp when the response was generated.
          format: date-time
        requestId:
          type: string
          description: Unique request identifier for tracing.
          nullable: true
        data:
          description: The response payload.
          nullable: true
        meta:
          $ref: "#/components/schemas/ApiV1Meta2"
        rateLimit:
          $ref: "#/components/schemas/ApiV1RateLimit2"
      additionalProperties: false
      description: Standardized successful API response wrapper for v1.0.0 endpoints.
    ApiV1Meta2:
      type: object
      properties:
        page:
          type: integer
          description: Current page number (1-based).
          format: int32
        pageSize:
          type: integer
          description: Number of items per page.
          format: int32
        totalRecords:
          type: integer
          description: Total number of records available across all pages.
          format: int32
        totalPages:
          type: integer
          description: Total number of pages.
          format: int32
          readOnly: true
        hasNextPage:
          type: boolean
          description: Whether there is a next page available.
          readOnly: true
        hasPreviousPage:
          type: boolean
          description: Whether there is a previous page available.
          readOnly: true
      additionalProperties: false
      description: Pagination and metadata information for collection responses.
    ApiV1RateLimit2:
      type: object
      properties:
        limit:
          type: integer
          description: Total request quota for the current window.
          format: int32
        remaining:
          type: integer
          description: Remaining requests in the current window.
          format: int32
        reset:
          type: string
          description: UTC timestamp when the rate limit window resets.
          format: date-time
      additionalProperties: false
      description: Rate limit information returned with each response.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: apikey
```
