# Machineseeker Scraper — Used Machinery & Dealer Contacts (`crawloop/machineseeker-scraper`) Actor

Scrape Machineseeker and Maschinensucher used machinery: deep specs, prices, unmasked seller phones, and image galleries across regional domains. Listings or details mode. Cloudflare bypass on Apify.

- **URL**: https://apify.com/crawloop/machineseeker-scraper.md
- **Developed by:** [Andrej Kiva](https://apify.com/crawloop) (community)
- **Categories:** Automation, Developer tools, Integrations
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 1,000 scraped details rows

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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Machineseeker Scraper — Used Machinery & Dealer Contacts

> **Crawloop Used Machinery Marketplace Suite** — Structured extraction for used industrial machinery, metalworking equipment, wood processing systems, and heavy machinery. Built for B2B lead generation, dealer intelligence, and market pricing workflows.
>
> Product site: [crawloop.com/used-machinery](https://crawloop.com/used-machinery.html)

| Exapro | Resale.info | Machineseeker | Machineryline |
| :--- | :--- | :--- | :--- |
| [Exapro Scraper](https://crawloop.com/products/exapro-scraper.html) | [Resale.info Scraper](https://crawloop.com/products/resale-scraper.html) | **Machineseeker Scraper** ◄── you are here | [Machineryline Scraper](https://crawloop.com/products/machineryline-scraper.html) |

> **Disclaimer:** This is an unofficial integration developed independently of Maschinensucher.de GmbH. It is not affiliated with, sponsored by, or endorsed by Machineseeker, Maschinensucher, or any of their subsidiaries.
>
> **Machineseeker**, **Maschinensucher**, and related names are trademarks of their respective owners. Listing data is read from publicly accessible web sources only; no proprietary databases are redistributed.
>
> This Actor is provided **for informational and research purposes only** (e.g. market research, dealer outreach, inventory monitoring). You are solely responsible for ensuring your use complies with applicable laws, platform terms of use, and your organization's policies.
>
> No warranty is given as to accuracy, completeness, or continued availability of third-party data. Use at your own risk.

Extract used machinery listings from **machineseeker.com** and regional localized domains (`maschinensucher.de`, `machineseeker.fr`, `machineseeker.pl`, `machineseeker.ru`, …) into clean JSON datasets on Apify. Supports category URLs, search queries, and direct product pages — with `listings` mode for fast catalog scans and `details` mode for full PDP enrichment including unmasked seller phone numbers and image galleries.

Cloudflare-protected pages are handled with `curl_cffi` Chrome 120 JA3 fingerprint emulation. No headless browser overhead — lightweight HTTP requests at high concurrency.

### When to use this Actor

Use the **Machineseeker Scraper** when you need broad multi-language coverage of used CNC machine tools, injection molding machinery, sheet metal equipment, and woodworking systems across Machineseeker's global domain network.

For unmasked dealer phones on Resale.info with strong German metalworking inventory, use the [Resale.info Scraper](https://crawloop.com/products/resale-scraper.html). For Exapro seller activity stats and European industrial listings, use the [Exapro Scraper](https://crawloop.com/products/exapro-scraper.html). For excavators, trucks (Autoline), and agricultural equipment (Agroline) with geo-coordinates, use the [Machineryline Scraper](https://crawloop.com/products/machineryline-scraper.html).

### Used Machinery Marketplace Workflow

````

Multi-platform intelligence          Per-platform enrichment
──────────────────────────          ─────────────────────────

Exapro Scraper        ──────────────────► seller stats & European listings
Resale.info Scraper   ──────────────────► dealer phones & profiles
Machineseeker Scraper ◄── you are here ──► regional CNC & metalworking
Machineryline Scraper ──────────────────► heavy equipment & coordinates

Join datasets by manufacturer + model ──► price comparison & lead routing

````

### Key Features

- **Universal language and domain support** — Feed URLs from any regional Machineseeker / Maschinensucher site; localized fields, currencies, and formatting are resolved automatically.
- **Search query support** — Text queries use the appropriate regional search page for the selected target language.
- **Two extraction modes** — `listings` for card-level specs, titles, pricing, and country; `details` for PDP galleries, technical specs, descriptions, and unmasked seller phone numbers.
- **Cloudflare WAF bypass** — `curl_cffi` Chrome 120 impersonation for reliable access at scale.
- **No headless browser overhead** — Highly concurrent, resource-friendly HTTP extraction.

### Input Parameters

| Parameter | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| `startUrls` | Array | `[]` | Category, search page, or direct product detail URLs to scrape. |
| `searchQuery` | String | `""` | Optional text query (e.g. `dmg`, `lathe`, `saw`). |
| `runMode` | String | `"listings"` | `"listings"` for card overview or `"details"` for deep PDP enrichment. |
| `maxItems` | Integer | `100` | Maximum total machinery items to scrape. |
| `maxPagesPerUrl` | Integer | `10` | Maximum pagination pages per category or search query. |
| `language` | String | `"en"` | Target language/domain for search requests (`en`, `de`, `fr`, `es`, `it`, `pl`, `nl`, `ru`, `cz`, `ro`, `hu`). |
| `concurrencyLimit` | Integer | `5` | Parallel workers — keep low to avoid anti-bot blocks. |
| `proxyConfiguration` | Object | `{}` | Apify Residential Proxies recommended. |

#### Input Example

```json
{
  "startUrls": [
    { "url": "https://www.machineseeker.com/Metal-processing-machinery/ci-2" }
  ],
  "runMode": "details",
  "maxItems": 50,
  "maxPagesPerUrl": 3,
  "language": "en",
  "concurrencyLimit": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
````

### Output Format

The scraper pushes structured JSON rows to the default Apify dataset. Example from `details` mode:

```json
{
  "id": "22077098",
  "title": "Vertical machining center DMG DMC 635 V",
  "url": "https://www.machineseeker.com/dmg-dmc+635+v/i-22077098",
  "price": 9000.0,
  "currency": "EUR",
  "priceFormatted": "€9,000",
  "location": "Sachsen",
  "year": 2007,
  "condition": "used",
  "specifications": {
    "Starting price": "€9,000",
    "Year of construction": "2007"
  },
  "sellerPhone": "+4920185786177",
  "sellerContactPerson": "Cedric Schuhmann",
  "sellerType": "dealer",
  "images": [
    "https://cdn.machineseeker.com/data/listing/img/vga/ms/75/39/22077098-01.jpg?v=1780908129"
  ]
}
```

***

**Learn more:** [Product page](https://crawloop.com/products/machineseeker-scraper.html) · [Suite hub](https://crawloop.com/used-machinery.html)

**Also from Crawloop Used Machinery:** [Exapro Scraper](https://crawloop.com/products/exapro-scraper.html) · [Resale.info Scraper](https://crawloop.com/products/resale-scraper.html) · [Machineryline Scraper](https://crawloop.com/products/machineryline-scraper.html)

**Also from Crawloop Industrial:** [Siemens Automation Suite](https://crawloop.com/siemens-automation.html) · [Rockwell Automation Suite](https://crawloop.com/rockwell-automation.html)

# Actor input Schema

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

List of URLs to scrape. Supports category pages (e.g. /Metal-processing-machinery/ci-2), search pages, or direct product detail pages.

## `searchQuery` (type: `string`):

Optional search term to query directly using Machineseeker's search engine (e.g. 'dmg', 'lathe', 'saw'). If provided, startUrls is not required.

## `runMode` (type: `string`):

Choose between extracting info directly from listing cards ('listings') or crawling deep product detail pages for full specs, descriptions, multiple images, and unmasked seller phone numbers ('details').

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

Maximum number of items to scrape in total.

## `maxPagesPerUrl` (type: `integer`):

Maximum number of pages to paginate for each category or search query.

## `language` (type: `string`):

Select the target language/domain for search queries. Used to map the search to the correct regional site (e.g., German to maschinensucher.de).

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

Proxy settings. It is recommended to use Apify Proxy (Residential) to bypass Cloudflare protection.

## `concurrencyLimit` (type: `integer`):

Maximum number of concurrent requests to make. Keep low to avoid hitting anti-bot blocks.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.machineseeker.com/Metal-processing-machinery/ci-2"
    }
  ],
  "runMode": "listings",
  "maxItems": 100,
  "maxPagesPerUrl": 10,
  "language": "en",
  "concurrencyLimit": 5
}
```

# 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://www.machineseeker.com/Metal-processing-machinery/ci-2"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawloop/machineseeker-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://www.machineseeker.com/Metal-processing-machinery/ci-2" }] }

# Run the Actor and wait for it to finish
run = client.actor("crawloop/machineseeker-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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://www.machineseeker.com/Metal-processing-machinery/ci-2"
    }
  ]
}' |
apify call crawloop/machineseeker-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=crawloop/machineseeker-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Machineseeker Scraper — Used Machinery & Dealer Contacts",
        "description": "Scrape Machineseeker and Maschinensucher used machinery: deep specs, prices, unmasked seller phones, and image galleries across regional domains. Listings or details mode. Cloudflare bypass on Apify.",
        "version": "0.1",
        "x-build-id": "RnbNVnf13Fbc7TVzh"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawloop~machineseeker-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawloop-machineseeker-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/crawloop~machineseeker-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawloop-machineseeker-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/crawloop~machineseeker-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawloop-machineseeker-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "List of URLs to scrape. Supports category pages (e.g. /Metal-processing-machinery/ci-2), search pages, or direct product detail pages.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Optional search term to query directly using Machineseeker's search engine (e.g. 'dmg', 'lathe', 'saw'). If provided, startUrls is not required."
                    },
                    "runMode": {
                        "title": "Run Mode",
                        "enum": [
                            "listings",
                            "details"
                        ],
                        "type": "string",
                        "description": "Choose between extracting info directly from listing cards ('listings') or crawling deep product detail pages for full specs, descriptions, multiple images, and unmasked seller phone numbers ('details').",
                        "default": "listings"
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of items to scrape in total.",
                        "default": 100
                    },
                    "maxPagesPerUrl": {
                        "title": "Max Pages per Start URL / Query",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of pages to paginate for each category or search query.",
                        "default": 10
                    },
                    "language": {
                        "title": "Search/Target Language",
                        "enum": [
                            "en",
                            "de",
                            "fr",
                            "es",
                            "it",
                            "pl",
                            "nl",
                            "ru",
                            "cz",
                            "ro",
                            "hu"
                        ],
                        "type": "string",
                        "description": "Select the target language/domain for search queries. Used to map the search to the correct regional site (e.g., German to maschinensucher.de).",
                        "default": "en"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings. It is recommended to use Apify Proxy (Residential) to bypass Cloudflare protection."
                    },
                    "concurrencyLimit": {
                        "title": "Max Concurrency Limit",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Maximum number of concurrent requests to make. Keep low to avoid hitting anti-bot blocks.",
                        "default": 5
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
