# Automotive Parts Search & Price Intelligence (`jarek090/automotive-parts-price-intelligence`) Actor

Compare fixed-price automotive parts across 9 eBay marketplaces. Search by OEM, MPN, EAN or description, normalize prices and known shipping to one currency, deduplicate offers, and rank best price and best value. No customer eBay credentials required.

- **URL**: https://apify.com/jarek090/automotive-parts-price-intelligence.md
- **Developed by:** [Jaroslaw Antolak](https://apify.com/jarek090) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 14.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$4.00 / 1,000 normalized marketplace offers

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

## Automotive Parts Search & Price Intelligence

Compare fixed-price automotive parts across **9 live eBay marketplaces** from one run. Search by OEM / MPN / EAN or by a plain-language part description, then get normalized prices, known shipping, match quality and deal ranking in one dataset.

**Live markets:** United States, Canada, Australia, United Kingdom, Germany, Poland, Italy, France and Spain. Additional official eBay Browse markets can be selected in the input.

### Quick start

1. Enter a **part number** for the strongest match, or type a **part description**.
2. Choose the eBay markets you want to compare.
3. Pick your target currency and optional destination country/postal code.
4. Click **Start**. Results are returned as ranked dataset rows.

The Input tab is prefilled with `Porsche 911 brake disc`, so a first run needs no setup.

#### Example input

```json
{
  "partNumber": "99735140602",
  "query": "Porsche 911 brake disc",
  "vehicleMake": "Porsche",
  "vehicleModel": "911",
  "ebayMarketplaces": ["EBAY_US", "EBAY_DE", "EBAY_PL"],
  "targetCurrency": "PLN",
  "maxResultsPerMarket": 10
}
```

### What you get

Each result is one normalized marketplace offer with the fields most useful for comparison:

| Field | Meaning |
|---|---|
| `market` | eBay regional marketplace |
| `title`, `brand`, `partNumber` | Listing identity and detected part data |
| `condition` | New / used status from the listing |
| `price`, `shippingPrice`, `totalPrice` | Original marketplace amounts |
| `totalTarget`, `targetCurrency` | Comparable total in your chosen currency |
| `matchScore` | How strongly the offer matches your query / part number |
| `dealScore` | Relative value score used for ranking |
| `seller`, `sellerRatingPct` | Seller context when eBay exposes it |
| `url`, `imageUrl` | Direct listing and image links |

### Common workflows

#### Find an exact OEM / MPN

Use `partNumber` whenever you know it. Separator variants are generated automatically, so `99735140602`, `997 351 406 02` and similar formats are searched as the same part family.

#### Compare the same part across countries

Select several eBay marketplaces and one `targetCurrency`. The Actor normalizes the results so US, Canadian, Australian and European listings can be compared in one table.

#### Search when the part number is unknown

Use `query` plus optional `vehicleMake`, `vehicleModel` and `vehicleYear`. These hints improve query expansion and ranking.

### Price and shipping logic

`totalTarget` includes the item price and shipping **only when eBay exposes shipping as a numeric amount or known-free shipping**. Customs duty, VAT, brokerage and checkout-only charges are not estimated. Use the direct listing URL for the final landed price before purchase.

### Pricing

**$0.004 per normalized marketplace offer** delivered to the default dataset (Pay per event). Set an Apify maximum charge limit if you want a strict spending cap for a run.

### API & automation

The same input works from the Apify Console and from **HTTP API, Python, JavaScript, CLI, OpenAPI and MCP**. Use the API tab on this Actor page for ready-to-copy code generated from the input schema.

For synchronous integrations, use Apify's `run-sync-get-dataset-items` endpoint to run the Actor and receive dataset rows in the response.

### Data source and scope

Live marketplace data comes from the **eBay Production Browse API**. Customer eBay credentials are not required. Results depend on what eBay exposes for each marketplace and listing at run time.

This Actor is a search and price-intelligence tool, not a guarantee of vehicle fitment. Confirm compatibility and final checkout cost with the seller before ordering.

### Support

If a run does not return what you expect, open the **Issues** tab and include the search input, marketplace and run ID. Do not post API tokens or other secrets.

# Actor input Schema

## `query` (type: `string`):

Free-text description, for example Porsche 718 GTS brake disc.

## `partNumber` (type: `string`):

Exact manufacturer or OEM part number. It is normalized into spaced, dashed and compact search variants.

## `vehicleMake` (type: `string`):

Optional make used to improve ranking and query expansion.

## `vehicleModel` (type: `string`):

Optional model or generation used to improve ranking and query expansion.

## `vehicleYear` (type: `integer`):

Optional model year used as a search hint.

## `condition` (type: `string`):

Filter or preference for new or used items.

## `ebayMarketplaces` (type: `array`):

eBay Browse marketplaces to search. Nine default production markets are enabled; additional official Browse markets can be selected per run.

## `destinationCountry` (type: `string`):

Two-letter destination country used as shipping context where eBay supports destination-aware estimates.

## `destinationPostalCode` (type: `string`):

Optional postal code. When supplied with destination country, eBay can return more accurate calculated shipping information.

## `targetCurrency` (type: `string`):

Currency for normalized comparison using ECB reference rates when available.

## `maxResultsPerMarket` (type: `integer`):

Maximum number of normalized offers retained per regional market.

## `deduplicate` (type: `boolean`):

Remove repeated item IDs and near-identical records before ranking.

## Actor input object example

```json
{
  "query": "Porsche 911 brake disc",
  "partNumber": "99735140602",
  "vehicleMake": "Porsche",
  "vehicleModel": "911",
  "vehicleYear": 2012,
  "condition": "ALL",
  "ebayMarketplaces": [
    "EBAY_US",
    "EBAY_DE",
    "EBAY_PL"
  ],
  "destinationCountry": "PL",
  "targetCurrency": "PLN",
  "maxResultsPerMarket": 3,
  "deduplicate": true
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `summary` (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 = {
    "query": "Porsche 911 brake disc",
    "ebayMarketplaces": [
        "EBAY_US",
        "EBAY_DE",
        "EBAY_PL"
    ],
    "destinationCountry": "PL",
    "targetCurrency": "PLN",
    "maxResultsPerMarket": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("jarek090/automotive-parts-price-intelligence").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 = {
    "query": "Porsche 911 brake disc",
    "ebayMarketplaces": [
        "EBAY_US",
        "EBAY_DE",
        "EBAY_PL",
    ],
    "destinationCountry": "PL",
    "targetCurrency": "PLN",
    "maxResultsPerMarket": 3,
}

# Run the Actor and wait for it to finish
run = client.actor("jarek090/automotive-parts-price-intelligence").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 '{
  "query": "Porsche 911 brake disc",
  "ebayMarketplaces": [
    "EBAY_US",
    "EBAY_DE",
    "EBAY_PL"
  ],
  "destinationCountry": "PL",
  "targetCurrency": "PLN",
  "maxResultsPerMarket": 3
}' |
apify call jarek090/automotive-parts-price-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jarek090/automotive-parts-price-intelligence"
        }
    }
}

```

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/4qVb2VyfSLmv8Fy6L/builds/JGazx702FTLXDfbAm/openapi.json
