# $3.5 Carfax Report by VIN (PDF)✅ - Lookup & Car History Reports (`easytools/carfax-report-by-vin`) Actor

🚗 Download Carfax PDF reports by VIN (single or bulk) + run low-cost carfax VIN lookup and carfax VIN check for used cars. Pay only for delivered PDFs.

- **URL**: https://apify.com/easytools/carfax-report-by-vin.md
- **Developed by:** [Easy Tools](https://apify.com/easytools) (community)
- **Categories:** Automation, Integrations, Other
- **Stats:** 170 total users, 14 monthly users, 100.0% runs succeeded, 7 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.50 / get a carfax report by vin

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Carfax Report by VIN (PDF) — Carfax VIN Lookup, Carfax VIN Check & Vehicle History Report | **$3.5 ONLY**

🚗📄 Purchase and download a **carfax vehicle history report** PDF (single VIN or bulk), and use **carfax vin check** to check report availability when needed.

***

### Support

For issues, use the Actor page [**Issues**](https://console.apify.com/actors/DLQMhbkKiQ1kK1hYa/issues) or send email artur.novikk@gmail.com or message in [Telegram](https://t.me/systorer)

#### **What you get after each run 🎁**

- **Direct PDF link:** if a report is delivered, you get a direct download link to the **carfax vehicle history report** PDF.
- **Clear result for each VIN:** you immediately see whether the report was found, not found, or delivered.

### Prices 💵

- **CHECK\_ONLY:** $0.99 per **100 VINs** checked.
- **AUTO\_PURCHASE:** $3.5 per **delivered PDF report** (availability check included).

This is designed for people comparing **Carfax cost** and looking for a **carfax cheap** / **low cost carfax** way to run checks at scale.

***

### Quick start (UI) 🚀

1. Open the Actor page. 🌐
2. Paste VINs into `vinCodes` (single VIN or multiple VINs). 🧾
3. Choose `mode`:
   - `CHECK_ONLY` — paid availability check only 🔎 (this is **not** “free carfax by vin” / “check carfax free”)
   - `AUTO_PURCHASE` — purchases a report 🧾 **only when it’s found and delivered** and gives you a direct PDF link
4. Run the Actor. ▶️
5. Review the result for each VIN. 📊
6. If a report is delivered, open the direct PDF link in `reportFileUrl` Output.

![In](https://www.autoremarketing.com/wp-content/uploads/2021/01/Carfax.jpg)

Built for **carfax used cars** workflows: dealers, importers, marketplaces, and buyers who want scale without paying for missing reports.

***

### Table of contents

- Support
- What this Actor does
- Pricing & Run policy (Carfax cost / Carfax price)
- How it works (check → buy → PDF)
- Input (VIN / bulk VINs)
- What you receive after the run
- Statuses & error codes
- FAQ (free carfax by vin, check carfax free, etc.)
- Technical details

***

### What this Actor does (carfax report by vin number) 🧠

For each VIN, the Actor can:

- Validate VIN format (17 characters; letters/digits only; normalized to uppercase).
- Perform a **carfax vin check** (availability-only): whether a report exists for that VIN.
- In `AUTO_PURCHASE` mode: purchase the **carfax vehicle history report** and return a direct PDF download link.

If you’re comparing a **carfax report by vin number** workflow vs doing it manually, this is the automation piece.

***

### Pricing & Run policy (Carfax cost / Carfax price) 💸

> ### IMPORTANT NOTE ABOUT PRICING
>
> - `CHECK_ONLY` never purchases PDFs.
> - `AUTO_PURCHASE` charges **only when a report is found and delivered**.
> - If a VIN has no report, no purchase is made.

***

### How it works (check → buy → PDF) 🔁

1. Normalize VIN input (single VIN or list; de-duplicate; keep first-seen order).
2. Validate VIN format.
3. Perform availability check for each VIN.
4. If `mode = AUTO_PURCHASE` and a report exists:
   - charge for that VIN,
   - fetch the PDF,
   - return a direct PDF link in the results.

VINs are processed sequentially.

***

### Input (check VIN / carfax vin lookup) ⌨️

#### Fields

- `mode` *(optional)*: `CHECK_ONLY` | `AUTO_PURCHASE` (default: `AUTO_PURCHASE`)

Provide VINs via `vinCodes` *(string, optional)* — flexible bulk input:

- newline-separated
- comma-separated
- JSON array encoded as a string (e.g. `["VIN1","VIN2"]`)

#### Input examples

**1) Single VIN PDF (AUTO\_PURCHASE):**

```json
{
  "mode": "AUTO_PURCHASE",
  "vinCodes": "1HGCM82633A004352"
}
```

**2) Bulk availability (CHECK\_ONLY):**

```json
{
  "mode": "CHECK_ONLY",
  "vinCodes": "1HGCM82633A004352\nWBA8D9C50JA123456\nSALWG2SU4MA775654"
}
```

**3) VIN list as a JSON string (vinCodes):**

```json
{
  "mode": "CHECK_ONLY",
  "vinCodes": "[\"1HGCM82633A004352\",\"WBA8D9C50JA123456\"]"
}
```

***

### What you receive after the run 📦

#### For most users

- `CHECK_ONLY`: you see whether each VIN is `FOUND` or `NOT_FOUND`.
- `AUTO_PURCHASE`: if the report is delivered, you get a direct PDF link in `reportFileUrl`.
- You can process one VIN or many VINs in a single run.

#### Example result

```json
{
  "vin": "SALWG2SU4MA775654",
  "status": "DELIVERED",
  "checked": true,
  "reportFileUrl": "https://api.apify.com/v2/key-value-stores/KEY_VALUE_STORE_ID/records/carfax_SALWG2SU4MA775654.pdf?download=1",
  "errorCode": null
}
```

#### How to download the PDF

When `status = DELIVERED`, open `reportFileUrl` to download the **carfax vehicle history report** PDF.

***

### Statuses & error codes 🧾

#### Statuses

- `INVALID_INPUT` — VIN failed validation.
- `FOUND` — report found (`CHECK_ONLY`).
- `NOT_FOUND` — report not found.
- `DELIVERED` — report purchased and PDF is ready to download.
- `FAILED_AFTER_CHARGE` — PDF could not be delivered due to a service error (contact support with Run ID).
- `API_ERROR` — upstream API error.
- `BUDGET_EXCEEDED` — spend limit reached (run stopped).
- `SKIPPED_BUDGET` — skipped due to spend limit.
- `SKIPPED_FAILSAFE` — skipped due to a safety stop.

#### Common error codes (`errorCode`)

- `CARFAX_CHECK_FAILED` — `/check` request failed
- `CARFAX_CHECK_INVALID` — invalid `/check` response
- `CARFAX_HASH_FETCH_FAILED` — failed to fetch hash
- `CARFAX_HASH_INVALID` — missing/invalid hash
- `PDF_INVALID` — PDF too small / invalid
- `PDF_RENDER_FAILED` — PDF rendering failed
- `CONFIG_INVALID_API_KEY` — invalid API key
- `CONFIG_INVALID_MONETIZATION` — monetization configuration error
- `CHARGE_FAILED` — charging failed
- `SUPPLIER_BALANCE_LOW` — if you received this error, please contact support using the contacts in the [Support](#support) section. We will promptly increase your limit so you can continue.

***

### FAQ ❓

#### How do I check Carfax with VIN?

Run `mode = CHECK_ONLY` to do an availability-only **carfax vin lookup** / **carfax vin check**.
You’ll get `FOUND` or `NOT_FOUND` for each VIN.

#### Is this a “free carfax by vin” / “check carfax free” / “free car report carfax” tool?

No, it’s not a free Carfax product.

People often search for **free carfax by vin**, **check carfax free**, **free car report carfax**, or **free carfax vin check**. This Actor provides a low-cost automation flow:

- `CHECK_ONLY` = availability check only (paid, but inexpensive)
- `AUTO_PURCHASE` = buys PDFs only when available and delivered

#### How much does it cost (Carfax cost)?

- `CHECK_ONLY`: $0.99 / 100 VINs
- `AUTO_PURCHASE`: $3.5 per delivered PDF report

#### Do I pay if a report is not found?

No. In `AUTO_PURCHASE`, you pay only when the report is found and delivered (`DELIVERED`).

#### Where do I download the PDF?

Use `reportFileUrl` from the result. If the report was delivered, that link downloads the PDF directly.

#### Can I use this as a “car fax vin checker” for used cars?

Yes. Many users run it as a **car fax vin checker** for **carfax used cars** pipelines: first check availability in bulk, then purchase only the VINs they need.

***

### Technical details

This section is for users who want the implementation-level output details.

#### Structured output

- The Actor writes one structured result per VIN.
- Results can be exported to JSON, CSV, or Excel.
- In technical terms, delivered PDFs are stored by the run and exposed through `reportFileUrl`.

#### Full technical example

```json
{
  "vin": "SALWG2SU4MA775654",
  "status": "DELIVERED",
  "checked": true,
  "reportFileKey": "carfax_SALWG2SU4MA775654.pdf",
  "reportFileUrl": "https://api.apify.com/v2/key-value-stores/KEY_VALUE_STORE_ID/records/carfax_SALWG2SU4MA775654.pdf?download=1",
  "errorCode": null
}
```

#### Technical field reference

- `vin` — VIN code
- `status` — final processing status
- `checked` — availability result (`true` found, `false` not found, `null` unknown/error)
- `reportFileKey` — internal PDF file key for delivered reports
- `reportFileUrl` — direct PDF download link
- `errorCode` — short error code (if any)

# Actor input Schema

## `mode` (type: `string`):

Operation mode for VIN processing.

## `vinCodes` (type: `string`):

Enter one VIN or multiple VINs (JSON array, comma-separated, or one per line).

## Actor input object example

```json
{
  "mode": "AUTO_PURCHASE",
  "vinCodes": ""
}
```

# Actor output Schema

## `overview` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("easytools/carfax-report-by-vin").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("easytools/carfax-report-by-vin").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 '{}' |
apify call easytools/carfax-report-by-vin --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,easytools/carfax-report-by-vin"
        }
    }
}

```

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/DLQMhbkKiQ1kK1hYa/builds/hNT5R56eFcoCjiL3l/openapi.json
