---
type: "firecrawl-provider"
description: "Oracle Cloud Infrastructure (OCI) public list prices from the anonymous Cost Estimator price list API at apexapps.oracle.com/pls/apex/cetools/api/v1/products/: every part (SKU) with its pay-as-you-go unit price and usage tiers in one currency. Collection contract: source/status, records/list (segment: currency), records/get, search; records/changes is not offered (the publisher provides no deltas). Oracle declares no open licence for this data and its robots.txt answers 403; Oracle terms apply."
use_when: "Oracle Cloud Infrastructure (OCI) public list prices from the anonymous Cost Estimator price list API at apexapps.oracle.com/pls/apex/cetools/api/v1/products/: every part (SKU) with its pay-as-you-go unit price and usage tiers in one currency. Collection contract: source/status, records/list (segment: currency), records/get, search; records/changes is not offered (the publisher provides no deltas). Oracle declares no open licence for this data and its robots.txt answers 403; Oracle terms apply."
categories: "Developer"
capabilities: 4
credits_per_call: 5
---
# Oracle Cloud Infrastructure price list (apexapps.oracle.com) on Firecrawl Alexandria

Oracle Cloud Infrastructure (OCI) public list prices from the anonymous Cost Estimator price list API at apexapps.oracle.com/pls/apex/cetools/api/v1/products/: every part (SKU) with its pay-as-you-go unit price and usage tiers in one currency. Collection contract: source/status, records/list (segment: currency), records/get, search; records/changes is not offered (the publisher provides no deltas). Oracle declares no open licence for this data and its robots.txt answers 403; Oracle terms apply.

- Categories: Developer
- Category index: [Developer category](https://firecrawl.dev/alexandria/agents/categories/developer)
- Provider key: `apexapps-oracle-com`
- Access: Firecrawl credits
- Cost: 5 credits per call

## More

- [Human guide](https://firecrawl.dev/app/alexandria/apexapps-oracle-com)
- [OpenAPI spec](https://firecrawl.dev/alexandria/agents/providers/apexapps-oracle-com/openapi.json)

## Capabilities

- [Records get](https://firecrawl.dev/alexandria/agents/providers/apexapps-oracle-com/cloud-pricing/records_get): One part's list price tiers by Oracle part number: `GET /products/?partNumber=<part>&currencyCode=<currency>` (about 350 bytes). The API answers an unknown part with 200 and `items: null`, mapped to `not_found`; a known part without a price in the currency is also `not_found`. Records are shaped like `records_list`. Collection contract name: `records/get`.
- [Records list](https://firecrawl.dev/alexandria/agents/providers/apexapps-oracle-com/cloud-pricing/records_list): Full current OCI price list in one currency, one record per part x price tier, paged in memory: every page re-fetches `GET /products/?currencyCode=<currency>` (no server pagination exists; `offset` and `limit` are ignored by the API) and returns the next `page_size` parts. The cursor pins the currency, `lastUpdated` and the SHA-256 of the canonical items; a page that finds either changed fails with `invalid_input` code `publication_changed` instead of mixing versions. Segment key: `currency`. Collection contract name: `records/list`.
- [Search](https://firecrawl.dev/alexandria/agents/providers/apexapps-oracle-com/cloud-pricing/search): Parts whose `displayName` or `serviceCategory` contains every whitespace-separated term of `q` (case-insensitive), filtered in memory from the one-currency price list (`GET /products/?currencyCode=<currency>`; the API has no search parameter). Returns the matching parts' records, paged by part with `offset` and `limit`. No match is an empty result.
- [Source status](https://firecrawl.dev/alexandria/agents/providers/apexapps-oracle-com/cloud-pricing/source_status): Cheap version check of the OCI price list: one `GET /products/?currencyCode=<currency>` (about 200 KB for USD). Returns `lastUpdated` as `publication_id` and `published_at`, the part count, the tier (record) count, the response size and the SHA-256 of the canonical items. Oracle posts no hash of its own and sends an ETag that differs per query and is not honoured by `If-None-Match`, so it is not used. No delta endpoint exists, so `records/changes` is not offered. Collection contract name: `source/status`.

## 1. Choose this provider when

Oracle Cloud Infrastructure (OCI) public list prices from the anonymous Cost Estimator price list API at apexapps.oracle.com/pls/apex/cetools/api/v1/products/: every part (SKU) with its pay-as-you-go unit price and usage tiers in one currency. Collection contract: source/status, records/list (segment: currency), records/get, search; records/changes is not offered (the publisher provides no deltas). Oracle declares no open licence for this data and its robots.txt answers 403; Oracle terms apply.

## 2. Minimal request

Call `POST https://api.firecrawl.dev/v2/scrape` with `{ alexandria: { provider, capability, options } }`. For a batch, send `{ alexandria: [...] }` with up to 10 calls.

```json
{
  "provider": "apexapps-oracle-com",
  "capability": "cloud-pricing/records_get",
  "options": {
    "currency": "USD",
    "part_number": "B107951"
  }
}
```

## 3. Add provider options

Use only the options needed for the task:

- `currency` (string): ISO 4217 currency of the price slice, e.g. `USD`, `EUR`, `JPY` (case-insensitive; default `USD`). Oracle published 50 currencies on 2026-10-17; a code it does not publish fails with `not_found`. Pattern: ^[A-Za-z]{3}$. Example: `USD`
- `part_number` (string, required): Oracle part number, e.g. `B107951` (case-insensitive). Pattern: ^[A-Za-z0-9]+$. Example: `B107951`

## 4. Request through your preferred interface

### JavaScript

```javascript
const result = await firecrawl.scrape({
  alexandria: {
    provider: "apexapps-oracle-com",
    capability: "cloud-pricing/records_get",
    options: {
      currency: "USD",
      part_number: "B107951",
    },
  },
});
```

### Python

```python
result = firecrawl.scrape_alexandria({
  "provider": "apexapps-oracle-com",
  "capability": "cloud-pricing/records_get",
  "options": {
    "currency": "USD",
    "part_number": "B107951"
  }
})
```

### cURL

```sh
curl https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "alexandria": {
    "provider": "apexapps-oracle-com",
    "capability": "cloud-pricing/records_get",
    "options": {
      "currency": "USD",
      "part_number": "B107951"
    }
  }
}'
```

### CLI

```sh
firecrawl scrape 'apexapps-oracle-com/cloud-pricing/records_get' \
  --options '{"currency":"USD","part_number":"B107951"}'
```


### MCP

Call the FCX MCP retrieve tool with this object:

```json
{
  "provider": "apexapps-oracle-com",
  "capability": "cloud-pricing/records_get",
  "options": {
    "currency": "USD",
    "part_number": "B107951"
  }
}
```

Ask for only the returned fields needed by the task.

## 5. Full request shape

```json
{
  "provider": "apexapps-oracle-com",
  "capability": "cloud-pricing/records_get",
  "options": {
    "currency": "USD",
    "part_number": "B107951"
  }
}
```

## 6. Response data

The response includes `success`, `provider`, `capability`, `creditsCost` and `data`. This example shows the provider payload in `data`:

```json
{
  "currency": "USD",
  "observed_at_ms": 1792900597362,
  "part_number": "B107951",
  "publication_id": "2026-10-08T14:38:16.165Z",
  "record_count": 1,
  "records": [
    {
      "currency": "USD",
      "derived_fields": [
        "region",
        "term_type",
        "shape"
      ],
      "description": null,
      "display_name": "Oracle Exadata Exascale VM Filesystem Storage",
      "effective_at": "2026-10-08T14:38:16.165Z",
      "memory_gb": null,
      "metric_name": "Gigabyte (GB) Storage Capacity Per Month",
      "operating_system": null,
      "part_number": "B107951",
      "price_model": "PAY_AS_YOU_GO",
      "publication_id": "2026-10-08T14:38:16.165Z",
      "range_max": null,
      "range_min": null,
      "region": "global",
      "retrieved_at": "2026-10-25T03:56:37Z",
      "service_category": "Exadata Exascale Infrastructure",
      "shape": null,
      "source_record_id": "oracle:B107951:USD:0",
      "source_url": "https://apexapps.oracle.com/pls/apex/cetools/api/v1/products/?partNumber=B107951&currencyCode=USD",
      "tenancy": null,
      "term_type": "on_demand",
      "tier_count": 1,
      "tier_index": 0,
      "unit_price": 0.0999,
      "vcpu": null
    }
  ],
  "retrieved_at": "2026-10-25T03:56:37Z",
  "source_url": "https://apexapps.oracle.com/pls/apex/cetools/api/v1/products/?partNumber=B107951&currencyCode=USD"
}
```

## API reference-derived contract

The following capability contract is generated from the same normalized Alexandria API reference exposed in the API spec.

### Records get

- Capability: `cloud-pricing/records_get`
- Description: One part's list price tiers by Oracle part number: `GET /products/?partNumber=<part>&currencyCode=<currency>` (about 350 bytes). The API answers an unknown part with 200 and `items: null`, mapped to `not_found`; a known part without a price in the currency is also `not_found`. Records are shaped like `records_list`. Collection contract name: `records/get`.
- Instructions: To price one OCI SKU by its part number (from `records_list`, `search` or Oracle's price list page).
- Cost: 5 credits per call
- Capability file: [Records get](https://firecrawl.dev/alexandria/agents/providers/apexapps-oracle-com/cloud-pricing/records_get)

Accepted options:
- `currency` (string): ISO 4217 currency of the price slice, e.g. `USD`, `EUR`, `JPY` (case-insensitive; default `USD`). Oracle published 50 currencies on 2026-10-17; a code it does not publish fails with `not_found`. Pattern: ^[A-Za-z]{3}$. Example: `USD`
- `part_number` (string, required): Oracle part number, e.g. `B107951` (case-insensitive). Pattern: ^[A-Za-z0-9]+$. Example: `B107951`

Response schema example:
```json
{
  "currency": "USD",
  "observed_at_ms": 1792900597362,
  "part_number": "B107951",
  "publication_id": "2026-10-08T14:38:16.165Z",
  "record_count": 1,
  "records": [
    {
      "currency": "USD",
      "derived_fields": [
        "region",
        "term_type",
        "shape"
      ],
      "description": null,
      "display_name": "Oracle Exadata Exascale VM Filesystem Storage",
      "effective_at": "2026-10-08T14:38:16.165Z",
      "memory_gb": null,
      "metric_name": "Gigabyte (GB) Storage Capacity Per Month",
      "operating_system": null,
      "part_number": "B107951",
      "price_model": "PAY_AS_YOU_GO",
      "publication_id": "2026-10-08T14:38:16.165Z",
      "range_max": null,
      "range_min": null,
      "region": "global",
      "retrieved_at": "2026-10-25T03:56:37Z",
      "service_category": "Exadata Exascale Infrastructure",
      "shape": null,
      "source_record_id": "oracle:B107951:USD:0",
      "source_url": "https://apexapps.oracle.com/pls/apex/cetools/api/v1/products/?partNumber=B107951&currencyCode=USD",
      "tenancy": null,
      "term_type": "on_demand",
      "tier_count": 1,
      "tier_index": 0,
      "unit_price": 0.0999,
      "vcpu": null
    }
  ],
  "retrieved_at": "2026-10-25T03:56:37Z",
  "source_url": "https://apexapps.oracle.com/pls/apex/cetools/api/v1/products/?partNumber=B107951&currencyCode=USD"
}
```

### Records list

- Capability: `cloud-pricing/records_list`
- Description: Full current OCI price list in one currency, one record per part x price tier, paged in memory: every page re-fetches `GET /products/?currencyCode=<currency>` (no server pagination exists; `offset` and `limit` are ignored by the API) and returns the next `page_size` parts. The cursor pins the currency, `lastUpdated` and the SHA-256 of the canonical items; a page that finds either changed fails with `invalid_input` code `publication_changed` instead of mixing versions. Segment key: `currency`. Collection contract name: `records/list`.
- Instructions: To collect the whole OCI price panel for one currency page by page. Use `records_get` for one part.
- Cost: 5 credits per call
- Capability file: [Records list](https://firecrawl.dev/alexandria/agents/providers/apexapps-oracle-com/cloud-pricing/records_list)

Accepted options:
- `continuation` (string): `next_cursor` from the previous page. It carries the currency; `currency` may be omitted or must match. Example: `next_cursor`
- `currency` (string): ISO 4217 currency of the price slice, e.g. `USD`, `EUR`, `JPY` (case-insensitive; default `USD`). Oracle published 50 currencies on 2026-10-17; a code it does not publish fails with `not_found`. Pattern: ^[A-Za-z]{3}$. Example: `USD`
- `page_size` (number): Parts per page (1 to 250, default 100). Most parts have one tier; 54 USD parts have two to four. Example: `100`

Response schema example:
```json
{
  "content_hash": "3def2b0e614a331d5c2320b224ff5e868449193f6955978a47803de2ffd79331",
  "currency": "USD",
  "next_cursor": "oci1|USD|2026-10-08T14:38:16.165Z|3def2b0e614a331d5c2320b224ff5e868449193f6955978a47803de2ffd79331|3",
  "observed_at_ms": 1792900595376,
  "offset": 0,
  "page_size": 3,
  "part_count": 668,
  "parts_returned": 3,
  "parts_without_price": 0,
  "publication_id": "2026-10-08T14:38:16.165Z",
  "record_count": 3,
  "records": [
    {
      "currency": "USD",
      "derived_fields": [
        "region",
        "term_type",
        "shape"
      ],
      "description": null,
      "display_name": "Oracle Exadata Exascale VM Filesystem Storage",
      "effective_at": "2026-10-08T14:38:16.165Z",
      "memory_gb": null,
      "metric_name": "Gigabyte (GB) Storage Capacity Per Month",
      "operating_system": null,
      "part_number": "B107951",
      "price_model": "PAY_AS_YOU_GO",
      "publication_id": "2026-10-08T14:38:16.165Z",
      "range_max": null,
      "range_min": null,
      "region": "global",
      "retrieved_at": "2026-10-25T03:56:34Z",
      "service_category": "Exadata Exascale Infrastructure",
      "shape": null,
      "source_record_id": "oracle:B107951:USD:0",
      "source_url": "https://apexapps.oracle.com/pls/apex/cetools/api/v1/products/?partNumber=B107951&currencyCode=USD",
      "tenancy": null,
      "term_type": "on_demand",
      "tier_count": 1,
      "tier_index": 0,
      "unit_price": 0.0999,
      "vcpu": null
    },
    {
      "currency": "USD",
      "derived_fields": [
        "region",
        "term_type",
        "shape"
      ],
      "description": null,
      "display_name": "Oracle Exadata Exascale Smart Database Storage",
      "effective_at": "2026-10-08T14:38:16.165Z",
      "memory_gb": null,
      "metric_name": "Gigabyte (GB) Storage Capacity Per Month",
      "operating_system": null,
      "part_number": "B107952",
      "price_model": "PAY_AS_YOU_GO",
      "publication_id": "2026-10-08T14:38:16.165Z",
      "range_max": null,
      "range_min": null,
      "region": "global",
      "retrieved_at": "2026-10-25T03:56:34Z",
      "service_category": "Exadata Exascale Infrastructure",
      "shape": null,
      "source_record_id": "oracle:B107952:USD:0",
      "source_url": "https://apexapps.oracle.com/pls/apex/cetools/api/v1/products/?partNumber=B107952&currencyCode=USD",
      "tenancy": null,
      "term_type": "on_demand",
      "tier_count": 1,
      "tier_index": 0,
      "unit_price": 0.1953,
      "vcpu": null
    },
    {
      "currency": "USD",
      "derived_fields": [
        "region",
        "term_type",
        "shape"
      ],
      "description": null,
      "display_name": "OCI - FastConnect 400 Gbps",
      "effective_at": "2026-10-08T14:38:16.165Z",
      "memory_gb": null,
      "metric_name": "Port Hour",
      "operating_system": null,
      "part_number": "B107975",
      "price_model": "PAY_AS_YOU_GO",
      "publication_id": "2026-10-08T14:38:16.165Z",
      "range_max": null,
      "range_min": null,
      "region": "global",
      "retrieved_at": "2026-10-25T03:56:34Z",
      "service_category": "Networking - FastConnect",
      "shape": null,
      "source_record_id": "oracle:B107975:USD:0",
      "source_url": "https://apexapps.oracle.com/pls/apex/cetools/api/v1/products/?partNumber=B107975&currencyCode=USD",
      "tenancy": null,
      "term_type": "on_demand",
      "tier_count": 1,
      "tier_index": 0,
      "unit_price": 20,
      "vcpu": null
    }
  ],
  "retrieved_at": "2026-10-25T03:56:34Z",
  "source_url": "https://apexapps.oracle.com/pls/apex/cetools/api/v1/products/?currencyCode=USD"
}
```

### Search

- Capability: `cloud-pricing/search`
- Description: Parts whose `displayName` or `serviceCategory` contains every whitespace-separated term of `q` (case-insensitive), filtered in memory from the one-currency price list (`GET /products/?currencyCode=<currency>`; the API has no search parameter). Returns the matching parts' records, paged by part with `offset` and `limit`. No match is an empty result.
- Instructions: To find OCI part numbers and prices by product name or family, e.g. `GPU H100`, `block volume` or `autonomous`.
- Cost: 5 credits per call
- Capability file: [Search](https://firecrawl.dev/alexandria/agents/providers/apexapps-oracle-com/cloud-pricing/search)

Accepted options:
- `currency` (string): ISO 4217 currency of the price slice, e.g. `USD`, `EUR`, `JPY` (case-insensitive; default `USD`). Oracle published 50 currencies on 2026-10-17; a code it does not publish fails with `not_found`. Pattern: ^[A-Za-z]{3}$. Example: `USD`
- `limit` (number): Matching parts per page (default 25). Example: `25`
- `offset` (number): Matching parts to skip; pass the previous `next_cursor`. Example: `0`
- `q` (string, required): Search terms, all of which must occur in the part's display name or service category. Example: `<q>`

Response schema example:
```json
{
  "currency": "USD",
  "limit": 5,
  "match_count": 2,
  "next_cursor": null,
  "observed_at_ms": 1792900598334,
  "offset": 0,
  "parts_returned": 2,
  "publication_id": "2026-10-08T14:38:16.165Z",
  "q": "exascale storage",
  "record_count": 2,
  "records": [
    {
      "currency": "USD",
      "derived_fields": [
        "region",
        "term_type",
        "shape"
      ],
      "description": null,
      "display_name": "Oracle Exadata Exascale VM Filesystem Storage",
      "effective_at": "2026-10-08T14:38:16.165Z",
      "memory_gb": null,
      "metric_name": "Gigabyte (GB) Storage Capacity Per Month",
      "operating_system": null,
      "part_number": "B107951",
      "price_model": "PAY_AS_YOU_GO",
      "publication_id": "2026-10-08T14:38:16.165Z",
      "range_max": null,
      "range_min": null,
      "region": "global",
      "retrieved_at": "2026-10-25T03:56:37Z",
      "service_category": "Exadata Exascale Infrastructure",
      "shape": null,
      "source_record_id": "oracle:B107951:USD:0",
      "source_url": "https://apexapps.oracle.com/pls/apex/cetools/api/v1/products/?partNumber=B107951&currencyCode=USD",
      "tenancy": null,
      "term_type": "on_demand",
      "tier_count": 1,
      "tier_index": 0,
      "unit_price": 0.0999,
      "vcpu": null
    },
    {
      "currency": "USD",
      "derived_fields": [
        "region",
        "term_type",
        "shape"
      ],
      "description": null,
      "display_name": "Oracle Exadata Exascale Smart Database Storage",
      "effective_at": "2026-10-08T14:38:16.165Z",
      "memory_gb": null,
      "metric_name": "Gigabyte (GB) Storage Capacity Per Month",
      "operating_system": null,
      "part_number": "B107952",
      "price_model": "PAY_AS_YOU_GO",
      "publication_id": "2026-10-08T14:38:16.165Z",
      "range_max": null,
      "range_min": null,
      "region": "global",
      "retrieved_at": "2026-10-25T03:56:37Z",
      "service_category": "Exadata Exascale Infrastructure",
      "shape": null,
      "source_record_id": "oracle:B107952:USD:0",
      "source_url": "https://apexapps.oracle.com/pls/apex/cetools/api/v1/products/?partNumber=B107952&currencyCode=USD",
      "tenancy": null,
      "term_type": "on_demand",
      "tier_count": 1,
      "tier_index": 0,
      "unit_price": 0.1953,
      "vcpu": null
    }
  ],
  "retrieved_at": "2026-10-25T03:56:37Z",
  "source_url": "https://apexapps.oracle.com/pls/apex/cetools/api/v1/products/?currencyCode=USD"
}
```

### Source status

- Capability: `cloud-pricing/source_status`
- Description: Cheap version check of the OCI price list: one `GET /products/?currencyCode=<currency>` (about 200 KB for USD). Returns `lastUpdated` as `publication_id` and `published_at`, the part count, the tier (record) count, the response size and the SHA-256 of the canonical items. Oracle posts no hash of its own and sends an ETag that differs per query and is not honoured by `If-None-Match`, so it is not used. No delta endpoint exists, so `records/changes` is not offered. Collection contract name: `source/status`.
- Instructions: Before a collection to learn the current publication and hash, or to check whether the price list moved since the last snapshot.
- Cost: 5 credits per call
- Capability file: [Source status](https://firecrawl.dev/alexandria/agents/providers/apexapps-oracle-com/cloud-pricing/source_status)

Accepted options:
- `currency` (string): ISO 4217 currency of the price slice, e.g. `USD`, `EUR`, `JPY` (case-insensitive; default `USD`). Oracle published 50 currencies on 2026-10-17; a code it does not publish fails with `not_found`. Pattern: ^[A-Za-z]{3}$. Example: `USD`

Response schema example:
```json
{
  "content_hash": "3def2b0e614a331d5c2320b224ff5e868449193f6955978a47803de2ffd79331",
  "currency": "USD",
  "files": [
    {
      "format": "json",
      "name": "price list (USD)",
      "url": "https://apexapps.oracle.com/pls/apex/cetools/api/v1/products/?currencyCode=USD"
    }
  ],
  "item_count": 668,
  "observed_at_ms": 1792900594384,
  "priced_item_count": 668,
  "publication_id": "2026-10-08T14:38:16.165Z",
  "published_at": "2026-10-08T14:38:16.165Z",
  "record_count": 727,
  "retrieved_at": "2026-10-25T03:56:33Z",
  "segment_key": "currency",
  "size_bytes": 201009,
  "source_url": "https://apexapps.oracle.com/pls/apex/cetools/api/v1/products/?currencyCode=USD"
}
```
