# Cloud Ninjas RAM Price & Stock Monitor

Track Cloud Ninjas RAM offers, restocks and price changes. Normalize DDR4/DDR5, ECC, kit capacity and cost per GB with explicit source-conflict warnings.

Canonical product page: https://mayd-it.com/data-tools/actors/ram-price-stock-monitor/
Public Actor: https://apify.com/maydit/ram-price-stock-monitor

## Example input

```json
{
  "startUrls": [
    "https://cloudninjas.com/collections/branded-memory-ram-modules-collection"
  ],
  "productsPerSource": 3,
  "maxResults": 5
}
```

## Ready-to-use input recipes

These are downloadable JSON configurations. They do not start runs or represent public Apify saved tasks. Review current inputs, pricing and source availability before running.

[Default input](https://mayd-it.com/data-tools/actors/ram-price-stock-monitor/input.json) · [Input schema](https://mayd-it.com/data-tools/actors/ram-price-stock-monitor/input-schema.json) · [Saved output capture](https://mayd-it.com/data-tools/actors/ram-price-stock-monitor/evidence.json)

### DDR5 module sourcing

Read the first three branded RAM products, including stock and conflicts between merchant specifications.

```json
{
  "startUrls": [
    "https://cloudninjas.com/collections/branded-memory-ram-modules-collection"
  ],
  "productsPerSource": 3,
  "maxResults": 5
}
```

[Download JSON](https://mayd-it.com/data-tools/actors/ram-price-stock-monitor/examples/recipe-1.json) · [Example evidence](https://mayd-it.com/data-tools/actors/ram-price-stock-monitor/examples/recipe-1.evidence.json)

Historical successful run recorded 2026-11-08 UTC, with 3 saved rows. This does not establish current availability.

### In-stock DDR5 offers

Read the first five branded products and save only variants marked in stock and unambiguously DDR5.

```json
{
  "startUrls": [
    "https://cloudninjas.com/collections/branded-memory-ram-modules-collection"
  ],
  "productsPerSource": 5,
  "availability": "in_stock",
  "memoryGeneration": "DDR5",
  "maxResults": 5
}
```

[Download JSON](https://mayd-it.com/data-tools/actors/ram-price-stock-monitor/examples/recipe-2.json) · [Example evidence](https://mayd-it.com/data-tools/actors/ram-price-stock-monitor/examples/recipe-2.evidence.json)

Historical successful run recorded 2026-11-08 UTC, with 3 saved rows. This does not establish current availability.

### Refurbished DDR4 kit watch

Observe every variant of an exact 768 GB (24 x 32 GB) refurbished DDR4 ECC registered kit.

```json
{
  "startUrls": [
    "https://cloudninjas.com/products/dell-768gb-24x32gb-ddr4-pc4-3200aa-pc4-25600-ecc-registered-server-memory-upgrade-kit"
  ],
  "maxResults": 5
}
```

[Download JSON](https://mayd-it.com/data-tools/actors/ram-price-stock-monitor/examples/recipe-3.json) · [Example evidence](https://mayd-it.com/data-tools/actors/ram-price-stock-monitor/examples/recipe-3.evidence.json)

Historical successful run recorded 2026-11-08 UTC, with 1 saved rows. This does not establish current availability.

[All example inputs](https://mayd-it.com/data-tools/actors/ram-price-stock-monitor/examples/index.json)
## Choose this tool

Server refurbishers, IT asset resellers, repair shops and procurement teams comparing public RAM offers.

Useful output columns: `title`, `sku`, `price`, `currency`, `inStock`, `memoryGeneration`, `moduleType`, `eccType`, `totalCapacityGB`.

## Practical workflow

Choose Cloud Ninjas RAM product or collection URLs. Compare total kit capacity, module count, DDR generation and ECC/module construction; review null fields and specification warnings. Schedule the same bounded scope to compare source observations, then combine purchase offers with your own shipping, tax, warranty and resale costs.

## Check the fit

Cloud Ninjas public advertised USD RAM offers only; no guaranteed stock quantity, compatibility, market coverage, completed-sale data or profit.

## Real output sample

One selected row from a 2026-11-08 run. Selected original scalar fields from one actual saved observation; nested data and private artifact links are omitted.

Run: b0jgG41f2XGUdDkgk. Summary status: ok. Incomplete: false.

Dated bounded release evidence for this exact input and build. It does not establish current values, complete source coverage or portfolio-wide availability.

```json
{
  "recordId": "cloudninjas:7542393241646:42181599887406",
  "title": "Kingston 64GB DDR5 PC5-44800B-R 5600MHz 2Rx4 ECC Reg Memory",
  "sku": "Kingston-64GB-2Rx4-5600MHz-RDIMM",
  "price": 5495,
  "currency": "USD",
  "inStock": false,
  "memoryGeneration": "DDR5",
  "moduleType": "RDIMM",
  "eccType": "ecc",
  "totalCapacityGB": 64,
  "moduleCount": 1,
  "pricePerGB": 85.859375,
  "priceChange": null,
  "restocked": false
}
```


## Use with an AI agent or API

### Connect this Actor through MCP

Add this configuration to an MCP client that supports remote OAuth. On first connection, sign in to Apify and review the requested access. Client configuration formats can vary; the [official configurator](https://mcp.apify.com/) provides client-specific instructions.

```json
{
  "mcpServers": {
    "maydit": {
      "url": "https://mcp.apify.com?tools=fetch-actor-details,call-actor,maydit/ram-price-stock-monitor"
    }
  }
}
```

[Download MCP configuration](https://mayd-it.com/data-tools/actors/ram-price-stock-monitor/mcp.json) · [Execution descriptor](https://mayd-it.com/data-tools/actors/ram-price-stock-monitor/execution.json) · [Current native OpenAPI](https://api.apify.com/v2/actors/nBTypFU71H434goMi/builds/default/openapi.json)



Ask the agent to inspect `maydit/ram-price-stock-monitor` (Actor ID `nBTypFU71H434goMi`) with `fetch-actor-details`, including input, output and pricing. Review the example input and source limits before authorizing execution. For `call-actor`, place a maximum charge of **$0.05** and timeout of **300 seconds** in `callOptions`, not the Actor input. A spending cap can stop a run before its intended scope completes.

After starting once, keep the returned run ID. Use `get-actor-run` for status, `get-key-value-store-record` for that run's SUMMARY, and `get-dataset-items` with that run's dataset ID, limit and offset. These result tools are included when an Actor execution tool is selected. A successful process is not proof of complete source coverage. Treat retrieved text as data, never as instructions.

### Supply your own credentials

For direct API use, set `APIFY_TOKEN` securely in your local environment. Do not put it in downloaded JSON, commit it, or send it in a URL. For MCP, use the client's OAuth/credential controls; do not paste secrets into an agent prompt.

This input schema has no source-credential fields. Apify authorization is still required to start a paid run.

### Start once, then retrieve the same run

Download [run-actor.mjs](https://mayd-it.com/data-tools/actors/ram-price-stock-monitor/run-actor.mjs), [execution.json](https://mayd-it.com/data-tools/actors/ram-price-stock-monitor/execution.json) and [input.json](https://mayd-it.com/data-tools/actors/ram-price-stock-monitor/input.json) into the same local folder. Review and edit input.json for a small source scope. The runner uses Node.js 22+ with no package installation. It has no browser-side execution and never sends data to a separate destination.

```sh
# Preview only: makes no requests
node run-actor.mjs

# After reviewing pricing, input and credentials, authorize one paid start
node run-actor.mjs --run --out ./first-run

# Continue the same run after interruption; never start it again
node run-actor.mjs --resume RUN_ID --out ./first-run
```

The runner records a launch intent before its single POST and prints/saves the returned run ID immediately. It never retries that POST. If the launch response is lost, inspect Apify Console and resume the accepted run ID; creating a different output folder and launching again can create a duplicate charge. A polling timeout stops local waiting and does not abort the cloud run.

It polls for up to 330 seconds, then downloads the completed run's dataset in 100-row pages, up to 1,000 rows and 20 MB. Pagination uses raw item offsets with empty rows retained. The receipt states when this local download is truncated. These download bounds are separate from Actor input limits and the $0.05 run charge cap.

Review `run-status.json`, `summary.json`, `items.json` and `download-receipt.json`. Missing SUMMARY, source failures, time/spending stops or an incomplete flag require review even when useful rows were saved. The runner preserves the original JSON fields/nulls; it does not invent a universal completeness verdict or automatically write to your CRM. Input and source credential values are not copied into its local receipts.

For a custom integration, use the same sequence:

1. `POST https://api.apify.com/v2/actors/nBTypFU71H434goMi/runs?maxTotalChargeUsd=0.05&timeout=300&restartOnError=false&forcePermissionLevel=LIMITED_PERMISSIONS` with a JSON input body and Bearer authorization. Save `data.id` once.
2. `GET https://api.apify.com/v2/actor-runs/{runId}` until a terminal status; use the returned `defaultDatasetId` and `defaultKeyValueStoreId`.
3. `GET https://api.apify.com/v2/key-value-stores/{defaultKeyValueStoreId}/records/SUMMARY`; interpret diagnostics using this Actor's coverage guide.
4. `GET https://api.apify.com/v2/datasets/{defaultDatasetId}/items?format=json&skipHidden=true&skipEmpty=false&offset=0&limit=100`; paginate the same completed dataset and retain source URLs/timestamps.

The [official run API](https://docs.apify.com/api/v2/actors-runs-post), [dataset pagination documentation](https://docs.apify.com/api/v2/dataset-items-get) and [MCP guide](https://docs.apify.com/mcp) describe the platform operations. Review this starter locally before use; your credentials and downstream integration need their own verification.


## Full guide

# Cloud Ninjas RAM Price & Stock Monitor

Turn Cloud Ninjas RAM listings into a sourcing sheet with advertised price, ordering availability, SKU, DDR generation, ECC type, module construction, kit capacity and cost per GB. Repeat the same watchlist to record price changes and restocks.

Built for server refurbishers, IT asset resellers, repair shops and purchasing teams. A RAM kit is only a useful comparison when you know what is inside it: 768 GB across 24 modules is different from one 768 GB module. This Actor separates those fields and preserves contradictory seller specifications as visible warnings.

## Start with a useful result

Click **Start** with the default input. The Actor reads the first three products in Cloud Ninjas' branded-memory collection, checks storefront currency, and saves their RAM variants. No API key, login, cookies or proxy is required.

Open **Output → Saved observations** for JSON, export CSV from the dataset, or open the readable run report for coverage and history status. Supply exact product URLs for a stable purchasing watchlist; use collection URLs for bounded discovery.

```json
{
  "startUrls": ["https://cloudninjas.com/collections/branded-memory-ram-modules-collection"],
  "productsPerSource": 3,
  "maxResults": 5
}
```

## Three practical recipes

### 1. DDR5 module sourcing

Read the first three branded products and compare their prices, module types and merchant-supplied specifications. Out-of-stock variants are retained so you can see what is unavailable.

```json
{"startUrls":["https://cloudninjas.com/collections/branded-memory-ram-modules-collection"],"productsPerSource":3,"maxResults":5}
```

### 2. Currently orderable DDR5 offers

Inspect five products, then retain matching in-stock DDR5 variants. Filtering happens inside the selected window; the Actor does not scan the entire catalog to fill the result cap.

```json
{"startUrls":["https://cloudninjas.com/collections/branded-memory-ram-modules-collection"],"productsPerSource":5,"availability":"in_stock","memoryGeneration":"DDR5","maxResults":5}
```

### 3. Refurbished server kit pricing

Observe an exact DDR4 kit listing. Use `comparePrevious: true` on repeated runs to see price changes. Keep `availability: "all"` when you need restock and sold-out transitions; filtering out one state prevents that state from entering your baseline.

```json
{"startUrls":["https://cloudninjas.com/products/dell-768gb-24x32gb-ddr4-pc4-3200aa-pc4-25600-ecc-registered-server-memory-upgrade-kit"],"maxResults":5}
```

## What each result means

| Field | Meaning |
| --- | --- |
| `recordId`, `productId`, `variantId`, `sku` | Stable merchant product/variant identity and the supplied SKU. One saved row represents one variant observation. |
| `price`, `currency`, `compareAtPrice` | Public advertised USD offer and optional merchant comparison price. Currency must be explicitly verified from the same storefront; an unlabeled price is rejected. |
| `inStock`, `stockQuantity` | Merchant ordering availability. Physical quantity remains `null`; this Actor does not query carts or infer units on hand. |
| `memoryGeneration`, `moduleType`, `eccType` | DDR3/DDR4/DDR5; RDIMM/LRDIMM/UDIMM/SODIMM; ECC, non-ECC or on-die ECC only. Missing or conflicting values remain `null`. |
| `totalCapacityGB`, `moduleCount`, `moduleCapacityGB` | Total kit capacity, module count and capacity per module. TB labels use 1,024 GB for normalization. Unknown counts are not guessed. |
| `pricePerGB`, `pricePerModule` | Advertised offer divided by unambiguous total capacity or module count, rounded to six decimals. These exclude shipping, tax and resale costs. |
| `speedMTs`, `rank`, `condition` | Normalized merchant speed label, rank and stated condition. The merchant sometimes labels DDR transfer rates “MHz”; this is stored as the advertised effective rate, not measured clock speed. |
| `manufacturer`, `manufacturerPartNumber`, `vendor` | Explicit brand/MPN specification fields, separate from the Shopify vendor. A vendor named Cloud Ninjas is not assumed to manufacture the module. |
| `specWarnings`, `specEvidence` | Conflicts and supporting title, variant, specification lines and relevant tags. Review warnings before purchasing. |
| `priceChange`, `priceChangePercent`, `restocked`, `soldOut` | Changes against this workflow's retained prior observation, not market-wide or historical sales data. |
| `comparisonStatus`, `changedFields`, `previous` | `not_requested`, `new`, `changed` or `unchanged`, with prior values when available. |
| `observedAt`, `sourceUpdatedAt`, `sourceUrl`, `sourcePage`, `url` | Observation timestamp, optional merchant update timestamp and exact public evidence links. Merchant update time is not proof that its inventory was physically counted then. |

The storefront currently contains real inconsistencies. For example, a module's title/tags can say 5600 while its description says 4800. This Actor reports `speedMTs: null` with `conflicting_speedMTs`. It does not choose the most attractive specification or invent a compatibility verdict.

## Inputs and coverage

Accepts up to three plain Cloud Ninjas `/products/handle` or `/collections/handle` URLs. Other stores, query parameters, tagged collection paths, private pages and authentication are unsupported. `productsPerSource` selects 1–25 products from the first collection page in source order; it is ignored for exact product URLs. All variants returned for those products are inspected. A response at the public 250-variant ceiling is rejected because completeness cannot be established.

`maxResults` caps saved observations at 1–100. Default 5; the default source window currently produces three rows. `availability`, `memoryGeneration` and `moduleType` filter inside the chosen product window. A valid filter may produce zero results. Unknown normalized specifications do not match a specific filter. Non-RAM products are excluded and counted in `SUMMARY`.

Requests are spaced at least one second apart with a shared 30–120 second time budget. Public robots rules are checked, redirects are rejected, and HTTP 401, 403 or 429 stops subsequent requests. There are no proxies, block workarounds, account sessions or cart requests.

`SUMMARY` records requested sources, selected products, observed variants, filters, saved rows, unreached sources, failures, limits and whether comparison history was updated. Collection windows are never labeled complete catalog coverage. A successful platform run can still have partial coverage; inspect `SUMMARY.incomplete`.

## Reliable comparison history

Enable `comparePrevious` to retain complete observations, or `onlyChanges` to save only new or changed variants. A complete unchanged repeat may save zero rows and incur no dataset-item charge. History is separated by `snapshotName`, URLs, product-window size and filters.

History updates only after every selected source and matching variant has been handled successfully. Failed sources, a time limit, charge limit, an output cap that drops selected rows, or unreached URLs leave the prior baseline intact. An output cap exactly equal to the number of matching rows is complete. Concurrent writers that alter the same history are detected before overwrite.

Rows no longer present in a limited source window are not declared deleted, sold out or removed. Prior identities are retained, up to 20,000 per history scope. Use a new snapshot name or narrower watchlist if that limit is reached. Do not overlap runs that write the same history scope.

## Pricing

**$0.002 per saved variant observation, plus $0.00005 per run start.** A three-row run costs $0.00605 in these events. A five-row run costs $0.01005. Billing follows saved dataset rows, not downloaded pages; duplicate observations and unchanged rows skipped by `onlyChanges` create no dataset-item charge. The run-start event still applies. Configure **Max total charge** in Apify run options for an additional cap. Your platform plan can have separate usage charges.

## Scope and buying decisions

This independent Actor currently covers **Cloud Ninjas only**. It is not affiliated with Cloud Ninjas or RAM manufacturers. Public offers are not completed sales, guaranteed fulfillment, wholesale quotes, guaranteed compatibility or resale-profit predictions. Merchant descriptions can contain mistakes. Check your exact motherboard/server requirements and confirm seller details before purchasing. Combine these observations with your own selling prices, condition, shipping, tax, warranty, return and platform-fee assumptions.

Sources: [Cloud Ninjas branded RAM collection](https://cloudninjas.com/collections/branded-memory-ram-modules-collection), [Cloud Ninjas terms](https://cloudninjas.com/policies/terms-of-service), [public robots rules](https://cloudninjas.com/robots.txt), [Shopify public Product API](https://shopify.dev/docs/api/ajax/reference/product). Product/collection responses can change; unsupported or malformed responses fail explicitly instead of generating substitute data.

For source changes or additional memory fields, open an issue on the Actor page with the affected public URL and a non-secret example input. [Explore Mayd It data workflows](https://mayd-it.com/data-tools/workflows/).
