May’d It

DATA TOOLS / commerce

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.

JSON / CSV outputLimited permissionsSource: maydit/ram-price-stock-monitor

FROM SOURCE TO A USEFUL RESULT

A practical workflow

Choose this tool when…

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

titleskupricecurrencyinStockmemoryGenerationmoduleTypeeccTypetotalCapacityGB

Turn RAM listings into a comparable sourcing sheet, then watch advertised prices and restocks.

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 and source limits

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

Download this workflow as Markdown · Configure a small first run

REAL RUN · DATED EVIDENCE

See an actual saved result

Captured 2026-11-08. Selected columns from one saved row. Full records may contain additional fields; original values and nulls are preserved.

{
  "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
}

Dated bounded release evidence for this exact input and build. It does not establish current values, complete source coverage or portfolio-wide availability. Run reference: b0jgG41f2XGUdDkgk. Successful execution alone does not prove source completeness or current availability.

START SMALL

Example input

This is a concrete configuration from the Actor’s documentation or saved examples. Adjust its targets and dates for your use case. Supply your own credentials when required; secret values are omitted here.

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

CHOOSE A STARTING POINT

3 ready-to-use inputs

Pick a focused example, copy or download its JSON, then review the inputs and current pricing in your own Apify account. Downloading a configuration does not start a run.

Default input · Input schema · Saved output capture

DDR5 module sourcing

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

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

Saved run evidence: 2026-11-08 UTC · 3 saved rows. This is a historical check, not live data or a guarantee that every query will succeed today.

In-stock DDR5 offers

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

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

Saved run evidence: 2026-11-08 UTC · 3 saved rows. This is a historical check, not live data or a guarantee that every query will succeed today.

Refurbished DDR4 kit watch

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

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

Saved run evidence: 2026-11-08 UTC · 1 saved row. This is a historical check, not live data or a guarantee that every query will succeed today.

Download all example inputs and evidence references

A CLEAR DATA CONTRACT

Inputs you can configure

FieldTypeMeaning
startUrlsarray

Up to 3 plain https://cloudninjas.com/collections/handle or /products/handle URLs. Empty uses the branded RAM collection. No query strings, tagged collection paths, other shops, credentials or proxies.

productsPerSourceinteger

Read this many products from the first public collection page, then inspect all returned variants. Filters apply inside this window; they do not scan the whole catalog. Product URLs ignore this field.

availabilitystring

Merchant availability is an ordering flag, not a physical inventory count.

memoryGenerationstring

Filter normalized generation inside the selected window. Ambiguous values do not match a specific generation.

moduleTypestring

Keep registered, load-reduced, unbuffered and small-outline DIMMs distinct. This is not a system-compatibility check.

maxResultsinteger

Hard cap on saved billable rows. A partially saved window does not advance history.

comparePreviousboolean

Save a baseline only after all selected source windows succeed and all matching variants are handled. Produce price changes, restocked/soldOut and previous values. Missing listings are never inferred removed.

onlyChangesboolean

Enables comparison. An unchanged complete repeat can save zero rows with no dataset-item charge.

snapshotNamestring

1–80 letters, numbers, underscores or hyphens. History is also separated by the URL list, selected window and filters.

maxRunSecondsinteger

Bounded public requests, at least one second apart. Access refusal or rate limiting stops requests without bypass. Use fewer source URLs for faster runs.

Output fields

titleskupricecurrencyinStockmemoryGenerationmoduleTypeeccTypetotalCapacityGBmoduleCountpricePerGBpriceChangerestockedcomparisonStatusurl

These are the columns in the default dataset view. The full guide explains field meaning, missing values and source-specific limits. JSON preserves nested data; CSV is useful for flat columns.

Input schema JSON

KNOW THE COST

Event pricing

Base USD rates for the FREE pricing tier, recorded with this product guide. Plan discounts and future pricing changes may apply. Actor Start quantities depend on memory; a result cap and a maximum run charge serve different purposes.

EventUSD per eventWhat is charged
Actor Start$0.00005Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).
Saved observation$0.002One validated observation confirmed saved to the dataset.

Check current Apify pricing ↗ before running.

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 provides client-specific instructions.

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

Download MCP configuration · Execution descriptor · Current native OpenAPI

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, execution.json and 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.

# 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, dataset pagination documentation and MCP guide describe the platform operations. Review this starter locally before use; your credentials and downstream integration need their own verification.

SOURCE COVERAGE & PRACTICAL LIMITS

Full product guide

Documentation captured from build 1.0.2. Example outputs retain their original sample context; they are not live results.

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.

{
  "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.

{"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.

{"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.

{"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, Cloud Ninjas terms, public robots rules, Shopify public Product API. 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.