# Amazon.ca Product Details Scraper – CAD, No Start Fee (`loudtzu/amazon-ca-product-details`) Actor

Turn Amazon.ca ASINs or URLs into product records in CAD: price, list price, rating, ratings count, sold by, ships from, Best Sellers Rank, specs and bullets. No start fee, $0.0024 per product.

- **URL**: https://apify.com/loudtzu/amazon-ca-product-details.md
- **Developed by:** [Travis M](https://apify.com/loudtzu) (community)
- **Categories:** Business, Other
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.40 / 1,000 products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Amazon.ca Product Details Scraper – CAD prices, no start fee

### What stands out

- **Built for Amazon.ca.** Prices are in CAD from the Canadian storefront, along with Canadian "sold by" and "ships from" text.
- **Seller and rank fields.** Each record has sold by, ships from, Best Sellers Rank, availability, bought-past-month, bullets and the product-details table.
- **No start fee.** It costs $0.0024 per product saved and nothing per run.
- **Low compute.** It uses plain HTTP at 256 MB with no browser.
- **Pairs with our Amazon.ca Product Search Actor.** Use search to find ASINs, then use this Actor for the details.

### Price comparison

- delicious_zebu/amazon-product-details-scraper charges $0.0025 per result on Free and Bronze, $0.002 on Silver and $0.0015 on Gold and higher, plus a $0.00005 start fee.
- junglee/amazon-crawler charges $0.005 per result on Free down to $0.003 on Gold, with extra charges for offers.
- This Actor costs $0.0024 per product on every plan, with no start fee. On Silver and higher plans, the rivals above are cheaper per result.

### Input

| Field | Meaning |
|---|---|
| `asins` | One ASIN per line |
| `productUrls` | Optional `amazon.ca/dp/...` URLs |
| `maxItems` | Products to save (default 100, max 50,000) |
| `fetchAll` | Process every input (hard cap 50,000) |

### Output

`asin`, `url`, `title`, `brand`, `price`, `listPrice`, `discountPercent`, `currency` (CAD), `rating`, `reviewsCount` (ratings count), `boughtPastMonth`, `availability`, `soldBy`, `shipsFrom`, `bestSellersRank`, `categories`, `features`, `details`, `mainImage`, `hasVariations`.

Errors are listed in key-value store record `ERRORS` as `[{"asin", "url", "error"}]`, not charged.

### Limits vs. full crawlers

- **Some fields can be empty.** `price` is empty when the item is unavailable or has no buy-box offer. `soldBy` and `shipsFrom` are empty when the page shows no buy-box seller. `bestSellersRank` is empty when Amazon doesn't show a rank (common for Amazon devices and some Apple items). `brand` is empty for books, because book bylines name authors (people) and are left out.
- **Errors are reported but not charged.** If an ASIN is not found (404), is blocked, or uses an unsupported page layout, it isn't added to the dataset. Instead it's listed as `{asin, url, error}` in the `ERRORS` record of the run's default key-value store, which is free. The log ends with a summary line giving the number requested, saved and failed.
- **No review text.** Amazon.ca requires sign-in for reviews, so only the rating and ratings count are included.
- **No variant matrix, offer list, or postal-code delivery dates.** You get the default buy-box offer only. Full crawlers return more fields.
- **Amazon.ca only.**
- **No proxy.** Large cloud runs may hit Amazon robot checks. The run retries with backoff, then skips the product, and stops after three blocks in a row. It does not try to get around the check.
- No personal data. Seller names are business storefront names.

### Pricing

$0.0024 per product saved to the dataset (pay per event). ASINs that fail are not charged. No start fee.

# Actor input Schema

## `asins` (type: `array`):

One ASIN per line.

## `productUrls` (type: `array`):

Optional amazon.ca/dp/... URLs.

## `maxItems` (type: `integer`):

Total cap (default 100, max 50,000).

## `fetchAll` (type: `boolean`):

Ignore Max products and go until input/results end (hard cap 50,000).

## Actor input object example

```json
{
  "asins": [
    "B0C3HCD34R"
  ],
  "maxItems": 100,
  "fetchAll": false
}
```

# Actor output Schema

## `products` (type: `string`):

No description

## `errors` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "asins": [
        "B0C3HCD34R"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("loudtzu/amazon-ca-product-details").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "asins": ["B0C3HCD34R"] }

# Run the Actor and wait for it to finish
run = client.actor("loudtzu/amazon-ca-product-details").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "asins": [
    "B0C3HCD34R"
  ]
}' |
apify call loudtzu/amazon-ca-product-details --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,loudtzu/amazon-ca-product-details"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/XB2gggVtaiyMegpCE/builds/rQA9ys5cfmhRVbZ2H/openapi.json
