# Mtbdatabase Scraper (`nerdnd/mtbdatabase-scraper`) Actor

mtbdatabase.com scraper that collects bycicle specs(name, prices, sizes, etc.) on the product pages.

- **URL**: https://apify.com/nerdnd/mtbdatabase-scraper.md
- **Developed by:** [nerdnd](https://apify.com/nerdnd) (community)
- **Categories:** Travel
- **Stats:** 5 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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

### What does Mtbdatabase Scraper do?

Mtbdatabase Scraper will enable you to collect bycicle specs(name, prices, sizes, etc.) on the product pages.

Mtbdatabase Scraper can scrape:

- year
- name
- brand
- price
- family
- category
- sizes
- frame
- fork
- shock
- motor
- battery
- hubs
- wheels
- wheel_size
- spokes
- tires
- chain
- crank
- bottom_bracket
- derailleur_front
- derailleur_rear
- shifters
- brakeset
- handlebar
- saddle
- seatpost
- stem
- grips
- headset
- manufacturer_url
- loaded_url
- image_url

### Why scrape [Mtbdatabase](https://mtbdatabase.com)?

[Mtbdatabase](https://mtbdatabase.com) is a crucial resource in the cycling industry, particularly for mountain biking enthusiasts and professionals. Here are the reasons why MTB Database stands out as an important site

1. Comprehensive Database of Mountain Bikes

   MTB Database offers an extensive and detailed collection of mountain bikes from various brands and models. This makes it an invaluable resource for riders looking to research and compare different bikes based on specifications, performance, and user reviews.

2. Detailed Specifications and Reviews

   The site provides thorough specifications for each bike, including frame materials, suspension types, component details, and geometry. In addition to technical specs, MTB Database features user reviews and ratings, giving potential buyers insights into real-world performance and reliability.

3. Up-to-Date Information

   MTB Database is regularly updated with the latest releases and information from leading mountain bike manufacturers. This ensures that users have access to the most current and accurate data, helping them stay informed about new trends and innovations in the mountain biking world.

4. User-Friendly Interface

   The website is designed with a user-friendly interface that makes it easy to navigate and find relevant information. Advanced search and filter options allow users to quickly narrow down their choices based on specific criteria, such as brand, model year, and technical features.

5. Community Engagement

   MTB Database fosters a strong community of mountain biking enthusiasts. Users can share their experiences, ask questions, and provide feedback on different bikes. This community-driven aspect enhances the site’s value by offering diverse perspectives and firsthand accounts.

6. Educational Content

   In addition to bike listings, MTB Database offers educational content such as buying guides, maintenance tips, and industry news. This helps both new and experienced riders make informed decisions and stay knowledgeable about all aspects of mountain biking.

7. Trusted Resource for Buyers and Sellers

   For those looking to buy or sell mountain bikes, MTB Database serves as a trusted resource. Buyers can rely on the detailed information and reviews to make confident purchasing decisions, while sellers can use the platform to reach a targeted audience of mountain biking enthusiasts.

8. Enhances Market Transparency

   By providing detailed information and user reviews, MTB Database enhances transparency in the mountain biking market. Th

In summary, MTB Database is an essential site for anyone involved in mountain biking. Its comprehensive database, detailed specifications, user reviews, and educational content make it a go-to resource for researching, comparing, and choosing the best mountain bikes available.

### How to scrape [Mtbdatabase](https://mtbdatabase.com)

It's easy to scrape \[target website name with link] with Mtbdatabase Scraper. Just follow these few steps and you'll get your data in a few minutes.

1. Click on Try for free.
2. Enter start urls(it should be product detail pages) you want to scrape.
3. Click on Run.
4. When Mtbdatabase Scraper has finished, preview or download your data from the Dataset tab.

### Results

```json
[
    {
        "image_url": "https://cdn.mtbdatabase.com/wp-content/uploads/2021/08/15032618/2022-Trek-Marlin-6.jpg.webp",
        "manufacturer_url": "https://www.trekbikes.com/us/en_US/bikes/mountain-bikes/cross-country-mountain-bikes/marlin/marlin-6/p/35066/",
        "id": "956eaa8a5acd2ea175ec23b6fdba9505080c4d0d",
        "family": "Marlin",
        "name": "Marlin 6",
        "price": "$779.00",
        "category": "Cross Country",
        "sizes": "13.5\", 15.5\", 17.5\", 18.5\", 19.5\", 21.5\", 23\"",
        "year": "2022",
        "brand": "Trek",
        "loaded_url": "https://mtbdatabase.com/bikes/2022/trek/marlin/2022-trek-marlin-6/",
        "frame": "Alpha Silver Aluminum, internal routing, chainstay disc brake mount, rack and kickstand mount, 135x5mm QR",
        "fork": "SunTour XCT, Size: XS, SR Suntour XCT 30, coil spring, preload, hydraulic lockout, 42mm offset for 27.5'' wheel, 100mm QR, 80mm travel; Size: S, SR Suntour XCT 30, coil spring, preload, hydraulic lockout, 42mm offset for 27.5'' wheel, 100mm QR, 100mm travel; Size: M, ML, L, XL, XXL, SR Suntour XCT 30, coil spring, preload, hydraulic lockout, 46mm offset for 29'' wheel, 100mm QR, 100mm travelSR SuntourSR SuntourSR Suntour",
        "hubs": "Formula DC-22, alloy, 6-bolt, Shimano 8/9/10 freehub, 135x5mm QRFormulaShimano",
        "wheels": "Bontrager Connection, double-wall, 32-hole, 20mm width, schrader valveBontrager",
        "wheel_size": "\n29\" 27.5\" ",
        "spokes": "14g stainless steel",
        "tires": "Size: XS, S, Bontrager XR2 Comp, wire bead, 30 tpi, 27.5x2.20''; Size: M, ML, L, XL, XXL, Bontrager XR2 Comp, wire bead, 30 tpi, 29x2.20''BontragerBontrager",
        "chain": "KMC, KMC X10, 10 speedKMCKMC",
        "crank": "Prowheel C10Y-NW, 30T steel narrow-wide ring, 170mm lengthProwheel",
        "bottom_bracket": "VP BC73, 73mm, threaded cartridge",
        "derailleur_rear": "Shimano Deore, Shimano Deore M5120, long cageShimanoShimano",
        "shifters": "Shimano Deore, Shimano Deore M4100, 10 speedShimanoShimano",
        "brakeset": "Tektro, Size: XS, S, Tektro HD-M276 hydraulic disc, short reach lever; Size: M, ML, L, XL, XXL, Tektro HD-M275 hydraulic discTektroTektroTektro",
        "handlebar": "Size: XS, Bontrager alloy, 31.8mm, 5mm rise, 690mm width; Size: S, M, ML, L, XL, XXL, Bontrager alloy, 31.8mm, 5mm rise, 720mm widthBontragerBontrager",
        "saddle": "Bontrager Arvada, steel rails, 138mm widthBontrager",
        "seatpost": "Size: XS, S, M, Bontrager alloy, 31.6mm, 12mm offset, 330mm length; Size: ML, L, XL, XXL, Bontrager alloy, 31.6mm, 12mm offset, 400mm lengthBontragerBontrager",
        "stem": "Size: XS, Bontrager alloy, 31.8mm, Blendr compatible, 7 degree, 50mm length; Size: S, Bontrager alloy, 31.8mm, Blendr compatible, 7 degree, 60mm length; Size: M, Bontrager alloy, 31.8mm, Blendr compatible, 7 degree, 70mm length; Size: ML, L, Bontrager alloy, 31.8mm, Blendr compatible, 7 degree, 80mm length; Size: XL, XXL, Bontrager alloy, 31.8mm, Blendr compatible, 7 degree, 90mm lengthBontragerBontragerBontragerBontragerBontrager",
        "grips": "Bontrager XR Endurance Comp, lock-onBontrager",
        "headset": "Semi-integrated, 1-1/8''"
    },
    {
        "image_url": "https://cdn.mtbdatabase.com/wp-content/uploads/2019/12/22070503/2020-Giant-Reign-E-2-Pro.jpg.webp",
        "id": "f9012d7d4a3d561f665b5cace81daf242db2f5dc",
        "family": "Reign E+ Pro",
        "name": "Reign E+ 2 Pro",
        "price": "$5,500.00",
        "category": "E-Mountain",
        "sizes": "S, M, L, XL",
        "year": "2020",
        "brand": "Giant",
        "loaded_url": "https://mtbdatabase.com/bikes/2020/giant/reign-e-pro/2020-giant-reign-e-2-pro/",
        "frame": "ALUXX SL-grade aluminum, 160mm Maestro suspension system, 'Boost' 148x12QR, Giant EnergyPak Plus range extender compatible",
        "fork": "Fox 36 Float Rhythm 27.5, 170mm, Grip Damper, Sweep adjust, Boost 110x15QR, e-Bike optimizedFox",
        "shock": "Fox Float DPX2 Performance, EVOL Large Volume sleeve, 2-position lever, 205x62.5mm Trunnion mount, custom tunedFox",
        "hubs": "Giant eTracker Boost, Sealed cartridge bearing, 6-bolt, Front: 110x15Rear: 148x12mm Thru-axleFront: Rear: ",
        "wheels": "Giant AM 27.5+, Tubeless ready, 35mm inner width",
        "wheel_size": "\n27.5\" ",
        "spokes": "Sapim E-Lite [r] Race [f]Sapim",
        "tires": "Maxxis Minion DHF 27.5x2.6\" foldable, Tubeless, EXO+, 3c MaxxTerra[F]Maxxis High Roller II 27.5x2.6\" foldable, Tubeless, DoubleDown, 2x120tpi, 3C MaxxTerra Compound [R]MaxxisMaxxis",
        "chain": "SRAM NX Eagle PowerLock, 12-speedSRAM",
        "crank": "SRAM X-Sync Eagle 36T 104BCD chainringPraxis e-Cadet+ custom forged crankarm set (Q-factor=168, S/M:160, L/XL:165)SRAM",
        "derailleur_front": "MRP 1X custom \"V3\" co-moulded TR chain guide",
        "derailleur_rear": "SRAM GX Eagle 12-speedSRAM",
        "shifters": "SRAM GX Eagle 12-speedSRAM",
        "brakeset": "SRAM Guide RE, 4-piston, hydraulic disc, 200mmSRAM",
        "handlebar": "Giant Contact Trail, 35x800mm",
        "saddle": "Giant Contact, Neutral",
        "seatpost": "Giant Contact Switch, dropper, 30,9mm (S:100/M:125/L:150/XL:170)",
        "stem": "Giant Contact SL 35"
    }
]
```

### Is it legal to scrape [Mtbdatabase](https://mtbdatabase.com)?

Note that personal data is protected by GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers. We also recommend that you read our blog post: [is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

# Actor input Schema

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

Detail page URLs to start with

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

Specifies proxy servers that will be used by the scraper in order to hide its origin.

## Actor input object example

```json
{
  "startUrls": [
    "https://mtbdatabase.com/bikes/2022/trek/marlin/2022-trek-marlin-6/",
    "https://mtbdatabase.com/bikes/2020/giant/reign-e-pro/2020-giant-reign-e-2-pro/"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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": [
        "https://mtbdatabase.com/bikes/2022/trek/marlin/2022-trek-marlin-6/",
        "https://mtbdatabase.com/bikes/2020/giant/reign-e-pro/2020-giant-reign-e-2-pro/"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("nerdnd/mtbdatabase-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": [
        "https://mtbdatabase.com/bikes/2022/trek/marlin/2022-trek-marlin-6/",
        "https://mtbdatabase.com/bikes/2020/giant/reign-e-pro/2020-giant-reign-e-2-pro/",
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("nerdnd/mtbdatabase-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": [
    "https://mtbdatabase.com/bikes/2022/trek/marlin/2022-trek-marlin-6/",
    "https://mtbdatabase.com/bikes/2020/giant/reign-e-pro/2020-giant-reign-e-2-pro/"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call nerdnd/mtbdatabase-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nerdnd/mtbdatabase-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/hdx2ZB41Kjb6As8GP/builds/RvU9XfxQimYVYKNoE/openapi.json
