# 🚘Carfolio Website Car Data Scraper 🇺🇸 (`jordan-byte/carfolio-car-specifications-scraper`) Actor

Extract complete automobile specifications body type, dimensions, engine and powertrain data, performance figures, fuel consumption, chassis details and more — for any make, model, or search you're interested in.

- **URL**: https://apify.com/jordan-byte/carfolio-car-specifications-scraper.md
- **Developed by:** [Jordan Byte](https://apify.com/jordan-byte) (community)
- **Categories:** Lead generation, Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

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/platform/actors/running/actors-in-store#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

Extract complete **automobile specifications** from [carfolio.com](https://carfolio.com) — body type, dimensions, engine and powertrain data, performance figures, fuel consumption, chassis details and more — for any make, model, or search you're interested in. Start from a search, a single manufacturer, one specific car page, or crawl the **entire site** in one run. Every result is delivered as clean, structured JSON ready for the Apify API, scheduling, and your other integrations, with automatic proxy rotation so runs keep working reliably at scale.

### Why use this Carfolio scraper?

Carfolio.com hosts specification sheets for tens of thousands of production and historical cars, but the site is only really browsable one page at a time. This Actor turns that into a dataset you can actually use:

- **Market and competitor research** — pull specs for every model in a segment (SUVs, EVs, a specific decade) to compare dimensions, power, and efficiency side by side.
- **Automotive data projects** — feed a structured car specification dataset into an app, a price/valuation model, or a recommendation engine.
- **Enthusiast and historical archives** — collect full specs for a marque's entire back catalogue, including long-discontinued models.
- **Content and publishing** — generate accurate spec tables and comparisons for articles, listings, or catalogs without manual data entry.

### How to scrape carfolio.com car data

1. Click **Try for free** (or **Start**) to open the Actor.
2. On the **Input** tab, add one or more **Start URLs** — a search results page, a manufacturer page, or a single car's page. Or turn on **Scrape whole site** to crawl every manufacturer and every car listed on carfolio.com.
3. Set **Max cars** to how many records you want (per start URL, or in total for a whole-site run). Leave the default for a quick test, or set it to `0` for no limit.
4. Click **Start** and wait for the run to finish.
5. Open the **Dataset** tab (or the **Output** tab) to browse, filter, and export your results.

### Input

The Actor accepts a JSON input with the following fields (see the **Input** tab for the full form):

| Field                | Type    | Description                                                                                                                                                                                                                                                                                                              |
| -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `startUrls`          | array   | One or more carfolio.com URLs to start from: a search results page (e.g. `https://carfolio.com/search/results/?terms=ford`), a manufacturer page (e.g. `https://carfolio.com/ford/2561/`), or a single car page (e.g. `https://carfolio.com/ford-model-a-tudor-sedan-364958`). Ignored when `scrapeWholeSite` is `true`. |
| `scrapeWholeSite`    | boolean | When `true`, ignores `startUrls` and crawls every manufacturer and every car on carfolio.com, starting from its full make index. Combine with `maxItems: 0` for a complete, unrestricted crawl (this can take a very long time and produce a very large dataset).                                                        |
| `maxItems`           | integer | Maximum number of cars to scrape per start URL (or in total, when `scrapeWholeSite` is enabled). Default `5`. Set to `0` for no limit.                                                                                                                                                                                   |
| `proxyConfiguration` | object  | Apify Proxy settings. Enabled by default — carfolio.com blocks a meaningful share of requests sent without a proxy, so leaving this on gives the most reliable results.                                                                                                                                                  |

Example input:

```json
{
    "startUrls": [{ "url": "https://carfolio.com/search/results/?terms=porsche" }],
    "scrapeWholeSite": false,
    "maxItems": 20,
    "proxyConfiguration": { "useApifyProxy": true }
}
```

### Output

Each dataset item is one car, with a compact set of top-level fields plus the site's complete specification table grouped by section — nothing is left out. You can download results as JSON, CSV, Excel, HTML, or XML from the Dataset tab, or fetch them via the API.

```json
{
    "url": "https://carfolio.com/ford-model-a-tudor-sedan-364958",
    "title": "1928 Ford Model A Tudor Sedan",
    "year": 1928,
    "make": "Ford",
    "model": "Model A",
    "image": null,
    "summary": "The Ford Model A Tudor Sedan is a 2 door saloon (sedan)-bodied motor vehicle with a front mounted engine driving through the rear wheels...",
    "quickFacts": {
        "Body type": "2 door sedan/saloon with 4/5 seats",
        "Engine type": "naturally aspirated petrol",
        "Engine size": "3.3 litre",
        "Cylinders": "4, Straight",
        "Power": "40.6 PS / 40 bhp / 29.8 kW @ 2200 rpm",
        "Torque": "Unknown"
    },
    "specifications": {
        "bodywork": { "Body type": "4/5 seater sedan/saloon", "Number of doors": "2" },
        "dimensionsWeights": { "Wheelbase": "2629 mm / 103.5 inches" },
        "powertrain": { "Cylinders": "Straight 4", "Capacity": "3.3 litre 3285 cc (200.463 cu in)" },
        "chassis": { "Gearbox": "3 speed manual" },
        "general": { "Carfolio.com ID": "364958" }
    },
    "addedDate": "2014-03-10",
    "modifiedDate": "2020-02-02"
}
```

#### Data fields

| Field                       | Description                                                                                                                                                                        |
| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `url`                       | Canonical URL of the car's page                                                                                                                                                    |
| `title`                     | Full model title as shown on the page (usually "`year` `make` `model`")                                                                                                            |
| `year`, `make`, `model`     | Parsed from the title and breadcrumb                                                                                                                                               |
| `image`                     | Main photo URL, or `null` when the page has none                                                                                                                                   |
| `summary`                   | Short descriptive paragraph shown at the top of the page                                                                                                                           |
| `quickFacts`                | The at-a-glance key facts panel (body type, engine, power, torque, etc.)                                                                                                           |
| `specifications`            | The full specifications table, grouped by section (bodywork, dimensions & weights, aerodynamics, powertrain, performance, fuel consumption, chassis, general) exactly as published |
| `addedDate`, `modifiedDate` | When the record was added/last updated on the source site                                                                                                                          |

### Cost and performance

This Actor uses lightweight HTTP requests rather than a full browser, so it's fast and inexpensive to run. A run of a few dozen cars typically finishes in well under a minute on the free plan. Larger runs (a full manufacturer, or the whole site) scale linearly with the number of cars requested — use `maxItems` to control run size and cost, and check the **Runs** tab for actual usage on your plan.

### Tips

- Start with a small `maxItems` value to preview results before committing to a large or whole-site run.
- You can mix start URL types freely — search pages, manufacturer pages, and individual car pages can all be in the same `startUrls` list, each with its own `maxItems` budget.
- A whole-site run with `maxItems: 0` will scrape carfolio.com's entire catalogue, which can be very large — plan your compute unit budget accordingly.

### FAQ

**Is this legal?** This Actor only collects publicly available specification data. You are responsible for ensuring your use complies with carfolio.com's terms of service and applicable law in your jurisdiction.

**Some fields are empty/`null` for a car — why?** Not every car page has every spec filled in on the source site (older or rarer models especially). The Actor captures exactly what's published, without inventing or guessing values.

**Found a bug or missing data?** Open an issue on the Actor's **Issues** tab with the URL you ran and what you expected to see. Custom extraction fields or a tailored version of this Actor can also be arranged — get in touch via the Issues tab.

# Actor input Schema

## `startUrls` (type: `array`):

Where to start scraping on carfolio.com. You can add: (1) a search results URL, e.g. <code>https://carfolio.com/search/results/?terms=ford</code>, (2) a manufacturer page, e.g. <code>https://carfolio.com/ford/2561/</code>, or (3) a direct link to a single car's specification page, e.g. <code>https://carfolio.com/ford-model-a-tudor-sedan-364958</code>. Ignored when "Scrape whole site" is enabled below.

## `scrapeWholeSite` (type: `boolean`):

When enabled, the Actor ignores "Start URLs" and instead crawls every manufacturer and every car listed on carfolio.com, starting from its full make index. Combine with "Max cars" set to 0 for a complete, unrestricted crawl of the entire site (this can take a very long time and produce a very large amount of data).

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

Maximum number of car records to scrape per start URL (or in total, when "Scrape whole site" is enabled). Set to 0 for no limit.

## `proxyConfiguration` (type: `object`):

carfolio.com blocks a noticeable share of requests that aren't routed through a proxy, so Apify Proxy is enabled by default for reliable results. You can turn it off, but expect more failed pages.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://carfolio.com/search/results/?terms=ford"
    }
  ],
  "scrapeWholeSite": false,
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `cars` (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 = {
    "startUrls": [
        {
            "url": "https://carfolio.com/search/results/?terms=ford"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("jordan-byte/carfolio-car-specifications-scraper").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 = {
    "startUrls": [{ "url": "https://carfolio.com/search/results/?terms=ford" }],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("jordan-byte/carfolio-car-specifications-scraper").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 '{
  "startUrls": [
    {
      "url": "https://carfolio.com/search/results/?terms=ford"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call jordan-byte/carfolio-car-specifications-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jordan-byte/carfolio-car-specifications-scraper"
        }
    }
}

```

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/tnVKxyj311bG7cfZ5/builds/TqN2OgLIPIGqKk8yX/openapi.json
