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

# List Internet Products

> Get available ADSL and 4G LTE internet cards with real-time stock

## Overview

Returns available internet recharge cards for ADSL and 4G LTE services with real-time pricing and stock availability.

## Query Parameters

<ParamField query="type" type="string" required>
  Internet service type: `ADSL` or `4G`
</ParamField>

## Response

<ResponseField name="success" type="boolean" required>
  Indicates if the request was successful
</ResponseField>

<ResponseField name="data" type="object" required>
  <Expandable title="properties">
    <ResponseField name="products" type="array" required>
      Array of product objects

      <Expandable title="product object">
        <ResponseField name="cost" type="number">
          Your cost for this card in DZD
        </ResponseField>

        <ResponseField name="value" type="number">
          Card denomination in DZD
        </ResponseField>

        <ResponseField name="available" type="boolean">
          Stock availability (true = in stock)
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="type" type="string" required>
      Service type: `ADSL` or `4G`
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="meta" type="object" required>
  <Expandable title="properties">
    <ResponseField name="timestamp" type="string">
      Response timestamp in ISO 8601 format
    </ResponseField>
  </Expandable>
</ResponseField>

## Examples

<CodeGroup>
  ```bash ADSL Products theme={null}
  curl "https://api.oneclickdz.com/v3/internet/products?type=ADSL" \
    -H "X-Access-Token: YOUR_API_KEY"
  ```

  ```bash 4G Products theme={null}
  curl "https://api.oneclickdz.com/v3/internet/products?type=4G" \
    -H "X-Access-Token: YOUR_API_KEY"
  ```

  ```javascript Node.js theme={null}
  const type = "ADSL"; // or '4G'
  const response = await fetch(
    `https://api.oneclickdz.com/v3/internet/products?type=${type}`,
    { headers: { "X-Access-Token": "YOUR_API_KEY" } }
  );
  const { data } = await response.json();
  ```

  ```python Python theme={null}
  response = requests.get(
      'https://api.oneclickdz.com/v3/internet/products',
      headers={'X-Access-Token': 'YOUR_API_KEY'},
      params={'type': 'ADSL'}
  )
  products = response.json()['data']['products']
  ```

  ```php PHP theme={null}
  <?php
  $type = 'ADSL'; // or '4G'
  $ch = curl_init("https://api.oneclickdz.com/v3/internet/products?type={$type}");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-Access-Token: YOUR_API_KEY']);
  $response = curl_exec($ch);
  $data = json_decode($response, true);
  $products = $data['data']['products'];
  ?>
  ```
</CodeGroup>

### ADSL Products Response

```json theme={null}
{
  "success": true,
  "data": {
    "products": [
      {
        "cost": 1900,
        "value": 2000,
        "available": false
      },
      {
        "cost": 2850,
        "value": 3000,
        "available": true
      },
      {
        "cost": 475,
        "value": 500,
        "available": true
      },
      {
        "cost": 950,
        "value": 1000,
        "available": true
      }
    ],
    "type": "ADSL"
  },
  "meta": {
    "timestamp": "2025-10-29T00:36:50.059Z"
  }
}
```

### 4G Products Response

```json theme={null}
{
  "success": true,
  "data": {
    "products": [
      {
        "cost": 950,
        "value": 1000,
        "available": true
      },
      {
        "cost": 1425,
        "value": 1500,
        "available": true
      },
      {
        "cost": 475,
        "value": 500,
        "available": true
      },
      {
        "cost": 2375,
        "value": 2500,
        "available": true
      },
      {
        "cost": 3325,
        "value": 3500,
        "available": true
      },
      {
        "cost": 6175,
        "value": 6500,
        "available": false
      },
      {
        "cost": 1140,
        "value": 1200,
        "available": true
      }
    ],
    "type": "4G"
  },
  "meta": {
    "timestamp": "2025-10-29T00:36:50.632Z"
  }
}
```

## Important Notes

<Warning>
  **Remove `cost` before displaying to end users.** Apply your own markup for
  pricing.
</Warning>

<Note>
  Check `available: true` before allowing users to order. Stock levels are
  real-time.
</Note>

## Phone Number Formats

### ADSL Numbers

* Format: `0[0-9]{8}`
* Examples: `036362608`, `031417237`
* Fixed line numbers (landline)

### 4G Numbers

* Format: `213[0-9]{9}`
* Examples: `213472731602`, `213665983439`
* Mobile numbers with country code

[Validate numbers before ordering →](/en/api-reference/internet/validate-number)

## Best Practices

<CardGroup cols={2}>
  <Card title="Check Stock" icon="boxes-stacked">
    Always verify `available: true` before displaying to users
  </Card>

  <Card title="Apply Markup" icon="percent">
    Calculate: `sellPrice = cost * (1 + yourMargin)`
  </Card>

  <Card title="Cache Products" icon="clock">
    Cache for 5-10 minutes to reduce API calls
  </Card>

  <Card title="Validate Numbers" icon="circle-check">
    Use validate endpoint before submitting orders
  </Card>
</CardGroup>

## Related Endpoints

<CardGroup cols={2}>
  <Card title="Validate Number" icon="check" href="/en/api-reference/internet/validate-number">
    Validate phone before ordering
  </Card>

  <Card title="Send Top-Up" icon="paper-plane" href="/en/api-reference/internet/send-topup">
    Purchase internet card
  </Card>
</CardGroup>
