MotoSport Scraper: Powersports Parts, Tires and Gear
Pricing
from $22.00 / 1,000 part, gear or oem parts
MotoSport Scraper: Powersports Parts, Tires and Gear
Scrape motosport.com, the US powersports store: aftermarket parts, tires by size, riding gear and OEM parts with part numbers, USD prices, sale and stock status, vehicle fitment and brands, plus monitoring of new items and price changes. No login, no proxy. Export JSON, CSV or Excel.
Pricing
from $22.00 / 1,000 part, gear or oem parts
Rating
0.0
(0)
Developer
RecordsData
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share

MotoSport Scraper: Powersports Parts, Tires, Gear and OEM Part Prices
MotoSport Scraper is an Apify Actor that extracts products from motosport.com, the US powersports store: aftermarket parts, riding gear, accessories, motorcycle and ATV tires (one row per size) and OEM parts with manufacturer part numbers. Each row has the USD price, sale price, stock, variants and the vehicles the part fits. No login, browser or proxy is needed.
Export the result as JSON, CSV, Excel, XML or HTML, or read it through the Apify API. A run of 3 results takes about 4 seconds in the cloud (median 3.8 s over 18 test runs) and uses about 40 to 70 MB of memory.
What can you scrape from MotoSport?
- Parts, gear and accessories (
part): one row per aftermarket product. On 2026-10-19 the store listed 28,981 aftermarket products from 681 brands (helmets, gloves, boots, chains, sprockets, brakes, exhausts, tools, bags and more). Each row has the brand, category path, lowest and highest variant price, list price and discount when on sale, rating, photos and up to 200 variants with size, color, part number, price and quantity left. - Tires (
tire): one row per tire size, with the size read into numbers: width, aspect ratio, construction (bias or radial), rim diameter, and load index and speed rating when the size label shows them. Front, rear or combo is read from the name. About 1,300 tire products are listed. - OEM parts (
partwithpartOriginoem): the manufacturer catalog of 470,246 parts for Honda, Yamaha, Kawasaki, Suzuki, KTM, Husqvarna, Can-Am, GasGas and others, with part number, part name, price and shipping time. - Vehicle fitment (
fitment): one row per part and vehicle model it fits, with make, model, model code and years. OEM parts add the part group. - Brands (
brand): one row per brand with the product count, riding styles and product lines. - Price and stock changes (
partrows withchangeType): with monitoring on, a product whose price moved or that went in or out of stock comes back with the previous price and the difference.
Why use this MotoSport scraper?
- Built for one store: sizes, part numbers, variants and fitment are read from the product page itself, not guessed from a generic page layout.
- Three ways in: paste product or brand addresses, read a whole brand, or walk the store catalog in sitemap order and filter it.
- Checked filters: price range, in stock, on sale, product kind (part, tire, OEM), category, brand, search words and vehicle make, model and year are applied to every row before it is delivered. Narrow filters read more pages, never return rows that do not match.
- Prices in US dollars: the actor pins the store to the US, so a run from any country returns USD.
- Monitoring: scheduled runs deliver only new products, or only products whose price or stock changed.
- Clean, typed output: numbers are numbers, empty fields are left out instead of filled with
null, and every run has the same column order.
How to scrape MotoSport in four steps
- Create a free account at console.apify.com and open the actor.
- Choose Where to read from: addresses and part numbers (lookup), one or more brands, or the whole catalog.
- Add product addresses, brands, or filters such as price range, product kind and search words, and set the maximum number of items.
- Click Start, then download the dataset from the Storage tab.
A minimal input that returns the first 100 Dunlop tires with one row per size:
{"mode": "brand","brands": ["dunlop"],"productKinds": ["tire"],"fetchDetails": true,"maxItems": 100}
Three ways to point the scraper at MotoSport
| You choose | The actor returns |
|---|---|
| Lookup: product addresses, brand addresses, OEM part addresses or OEM part numbers | Exactly those products. A bare slug such as fox-racing-2027-v-core-helmet works too |
| Brand: one or more brands (name, slug or address) | Every product of the brand from its listing pages (60 per page, exact paging), optionally with the full product page |
| Catalog: the aftermarket or the OEM section | The store catalog in sitemap order, filtered, from any start position, until the item limit or the scan time limit |
Addresses can be a product (https://www.motosport.com/dunlop-american-elite-front-tire), an OEM part (https://www.motosport.com/oem-parts/part-number/704900813) or a brand (https://www.motosport.com/fox-racing). A bad address returns one free error row.
By default brand mode reads the listing pages only: title, brand, price range, sale flag, rating and photo, which is fast. Switch on Read each product page (slower) (or choose a filter that needs it, such as tires, category, stock or fitment) to get variants, part numbers, stock and description.
What data do you get from MotoSport?
Every row has a recordType: part, tire, fitment, or brand. Fields that do not apply or that the page does not give are left out.
| Field | Description |
|---|---|
recordType, sourceSite, country | Row type, motosport.com, US |
listingId, productId, styleId, url, slug, imageUrl | Product style code (part rows), size id (tire rows) or part number (OEM rows), site product id, canonical address, address slug, main photo |
title, brand, productType, categoryPath | Product name, brand, the store category (Helmet Offroad, Tire, OEM Parts) and its path |
vehicleType, partOrigin, condition | part or tire, aftermarket or oem, new |
sku, partNumber, partNumbers, partName | Store SKU, manufacturer part number (single variant), all variant part numbers, OEM part name |
price, priceMax, listPrice, discountPercent, onSale, currency | Lowest variant price, highest variant price, list price before the sale, discount percent, sale or clearance flag, USD |
available, stockStatus, quantityAvailable, shipsIn | In stock flag, in stock or out of stock, units left when the page shows it, OEM shipping time |
variantCount, variants, size, color | Number of variants, each with id, part number, size, color, price, stock and quantity; size and color for a single-variant product |
tirePosition, tireSize, tireWidthMm, tireAspectRatio, tireConstruction | Front, rear or combo; the size label; metric width and aspect ratio; bias, radial or bias belted |
tireDiameterInches, tireWidthInches, rimInches, loadIndex, speedRating | Inch sizes (such as 26x11-12), rim size, load index and speed rating when printed |
fitmentRequired | True when the store asks for a vehicle before it shows stock or fit |
make, model, modelCode, vehicleGroup, yearFrom, yearTo, years, partGroups | Fitment rows: the vehicle make and model, store model code, year range and list of years, OEM part groups |
rating, reviewCount, isNew | Average rating, number of reviews, new arrival flag from brand pages |
productCount, ridingStyles, productLines | Brand rows: number of products, riding styles, product lines |
description, images, imageCount | Description text, photo links, number of photos |
previousPrice, priceChange, priceChangePct, changeType | Monitoring: the earlier price, the difference, percent, and price-drop, price-increase, back-in-stock or out-of-stock |
sellerName, sellerUrl, isPrivateSeller | Always MotoSport, the store address, false (the store is the only seller) |
detailLevel, scrapedAt, error | listing or full, time of the read, and error only on a free error row |
Sample output
A real tire row from a cloud run:
{"imageUrl": "https://content.motosport.com/images/items/large/ATX/ATX0003/X001.jpg","title": "Artrax CTX Radial Tire","recordType": "tire","listingId": "ATX0003-X001-Y001","productId": "122783","url": "https://www.motosport.com/artrax-ctx-radial-tire","sourceSite": "motosport.com","country": "US","listingType": "sale","vehicleType": "tire","slug": "artrax-ctx-radial-tire","styleId": "ATX0003","sku": "AT-CTX-26-11-14","partNumber": "1308-26111400-CL77","brand": "Artrax","productType": "Tire","categoryPath": ["Tires"],"partOrigin": "aftermarket","condition": "new","price": 102.77,"onSale": false,"currency": "USD","available": true,"stockStatus": "in stock","tireSize": "26x11-14","tireConstruction": "bias","tireDiameterInches": 26,"tireWidthInches": 11,"rimInches": 14,"fitmentRequired": false,"rating": 4.8,"reviewCount": 299,"imageCount": 1,"sellerName": "MotoSport","sellerUrl": "https://www.motosport.com","isPrivateSeller": false,"detailLevel": "full","scrapedAt": "2026-10-19T09:37:30.732Z"}
A real part row for a product on sale (description, photos, most variants and part numbers left out):
{"title": "Fox Racing 2027 Flexair Gloves","recordType": "part","listingId": "FXRZ5L4","url": "https://www.motosport.com/fox-racing-2027-flexair-gloves","vehicleType": "part","sku": "FXRZ5L4","partNumbers": ["33725-001-S", "33725-110-S", "33725-130-S"],"brand": "Fox Racing","productType": "Gloves","categoryPath": ["Riding Gear", "Gloves"],"partOrigin": "aftermarket","price": 39.99,"priceMax": 49.95,"listPrice": 49.95,"discountPercent": 19.94,"onSale": true,"currency": "USD","available": true,"stockStatus": "in stock","variantCount": 21,"variants": [{ "id": "FXRZ5L4-X001-Y001", "partNumber": "33725-001-S", "size": "Small", "color": "Black", "price": 49.95, "available": true, "quantityAvailable": 4 }],"fitmentRequired": false,"imageCount": 10,"detailLevel": "full"}
A real OEM part row:
{"title": "Can-Am OEM LH REAR FENDER DECAL","recordType": "part","listingId": "704900813","url": "https://www.motosport.com/oem-parts/part-number/704900813","make": "Can-Am","partNumber": "704900813","partName": "LH REAR FENDER DECAL","brand": "Can-Am OEM","productType": "OEM Parts","partOrigin": "oem","price": 12.49,"onSale": false,"currency": "USD","available": true,"stockStatus": "in stock","shipsIn": "4-9 Days","detailLevel": "full"}
A real fitment row (one part, one vehicle model):
{"title": "Dunlop Geomax MX14 Rear Tire","recordType": "fitment","listingId": "DUN1WVB:alta:redshiftmx","url": "https://www.motosport.com/dunlop-geomax-mx14-rear-tire","vehicleType": "tire","make": "Alta","model": "REDSHIFT MX","modelCode": "redshiftmx","vehicleGroup": "Alta Dirt Bikes","yearFrom": 2017,"yearTo": 2018,"years": [2018, 2017],"sku": "DUN1WVB","brand": "Dunlop","productType": "Tire","price": 50.99,"currency": "USD"}
A brand row (product lines shortened):
{"title": "Fox Racing","recordType": "brand","listingId": "fox-racing","url": "https://www.motosport.com/fox-racing","brand": "Fox Racing","productCount": 1027,"ridingStyles": ["Dirt Bike", "ATV", "Utility ATV", "UTV", "Street Bike", "Cruiser"],"productLines": ["180", "Flexair", "V1", "V3 RS", "Vue", "360"]}
MotoSport prices, sales and stock
priceis the lowest price over the variants andpriceMaxthe highest, so a glove sold in 21 size and color variants can show 39.99 and 49.95.listPriceis the price before the sale for the sale variants, anddiscountPercentis computed from it.onSaleis true when a list price is higher than the price or the store marks the product Clearance.- Tires have no list price on the page, so a tire row is never flagged as on sale. Sales apply to parts, gear and OEM parts.
availableandquantityAvailablecome from the page stock message. Products that need a vehicle to be chosen first (about a quarter of the aftermarket catalog in a 80-product sample, mostly single-variant fitment parts) show no stock until then: the row leavesavailableout, and the In stock only filter does not return them.- Prices follow the visitor country on motosport.com. The actor pins the store to the United States, so every row is in USD.
Monitor MotoSport price and stock changes
Switch on Only new items (monitor) and the actor remembers every product it delivered in a named key-value store of your own account (motosport-seen). Scheduled runs of the same search return only products it has not delivered before. Add Also return price and stock changes and a product whose price or stock status changed since the last run comes back with previousPrice, priceChange, priceChangePct and changeType. Rows skipped by monitoring are never charged.
How does it compare with other options?
On 2026-10-19 the Apify Store had no actor for motosport.com. The practical alternatives are a generic e-commerce scraper or copying pages by hand.
| MotoSport Scraper | A generic e-commerce scraper | |
|---|---|---|
| Tire sizes | One row per size with width, aspect ratio, rim and construction as numbers | A product page reads as one item with the size list as text |
| OEM catalog | 470,246 parts by part number, part name, make and shipping time | Needs a separate address list and field mapping |
| Vehicle fitment | One row per part and vehicle model with years | Not part of a generic page layout |
| Variants | Size, color, part number, price, stock and quantity left per variant | Depends on the layout the tool guesses |
| Price monitoring | Built in, with previous price and type of change | Usually left to you |
MotoSport data use cases
Price tracking and MAP checks
Track the prices of a brand or a category every day, find new sales and clearance items, and compare MotoSport with your own shop or other retailers.
Tire finder and size catalog
Build a tire database by size: every width, aspect ratio and rim size per brand, with price and stock, for ATV, dirt bike, street and cruiser tires.
OEM part lookup and fitment tables
Look up Honda, Yamaha, Can-Am or Kawasaki part numbers in bulk, and get the vehicle models and years each part fits.
Assortment and market research
Count the products and product lines per brand, find which brands the store carries for each riding style, and watch new arrivals.
Automating the MotoSport Scraper
Schedule runs from the Apify Console, then send the dataset to Make, Zapier, n8n, Airbyte, Google Sheets, Slack or any webhook. With Only new items on, a daily schedule only delivers what changed.
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('RecordsData/motosport-scraper').call({mode: 'brand',brands: ['fox-racing'],onSaleOnly: true,maxItems: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.length, items[0].title, items[0].price, items[0].listPrice);
Use with AI agents (MCP)
Connect the Apify MCP server to Claude, Cursor or another MCP client and this actor appears as a tool: https://mcp.apify.com?tools=RecordsData/motosport-scraper.
Example prompt: "List the Dunlop tires on motosport.com with rim size 17, with size, price and stock." The agent sends { "mode": "brand", "brands": ["dunlop"], "productKinds": ["tire"], "fetchDetails": true, "maxItems": 100 } and filters the rows by rimInches.
Limits and responsible use of MotoSport data
The actor reads public product pages without logging in, one request at a time at about five requests per second at most, and slows down if the store answers with a block signal. It follows the robots.txt of the site and does not read the store search or the checkout. The terms of use of motosport.com restrict automated data collection, so check that your use is allowed before you rely on the data. The actor collects public product data only, no personal data.
- Store pages that need a browser are not read. Ride and category pages such as
/motorcycle/...are served only to a full browser, so they cannot be used as addresses. Use product, brand and OEM part addresses, or the catalog mode. - Search words are checked, not searched. The store search is not used. In brand and lookup mode the words must appear in the brand or product name of each row. In catalog mode the list is first narrowed by words in the product address (a product named "Michelin" is found for "michelin"), so a product whose address lacks the word can be missed. Tires are found in the catalog by the word tire in the address.
- Narrow filters read many pages. A catalog scan reads about 1 product page per second at 256 MB and about 3 per second at 1024 MB of memory. Maximum scan time (default 1800 seconds) stops the run and keeps the rows found. Filters on stock, sale, category, vehicle or tires need the product page, so use brand mode when you know the brand.
- Vehicle filters read the fitment list of each product, one more request per product. OEM fitment is read from the part page, aftermarket fitment only for products that ask for a vehicle.
- Listing-level rows (brand mode without the full page) cannot tell a tire from other parts, so their
vehicleTypeispart. Use Product kinds or Read each product page (slower) to get tire rows. - Photos and descriptions belong to MotoSport and its brands; you are responsible for how you use them. Reviewer names are never read, only the rating and review count.
- Free Apify plans are limited to 10 results per run.
Frequently Asked Questions
Can I scrape MotoSport prices and stock?
Yes. Every product row has the USD price (lowest and highest variant), the list price and discount when on sale, the in-stock flag and, for many variants, the quantity left. Run it on a schedule with the monitor on to track changes.
Can I get MotoSport tires by size?
Yes. Tire products are returned as one row per size, with tireSize as printed (for example 130/80-17 or 26x11-12) and numeric width, aspect ratio, rim diameter and construction. Choose Product kinds tire in brand or catalog mode.
How do I get OEM part numbers and the vehicles they fit?
Give part numbers or OEM part addresses in lookup mode, or run catalog mode with the OEM section. Add Fitments to What to collect to get one row per vehicle model with years and part group.
Which vehicles does an aftermarket part fit?
Parts that need a vehicle on the site (tires, brakes, chains and similar) have a fitment list. Add Fitments to What to collect: each row has the make, model, model code and years. Universal parts have no list and return one free error row when you asked for their fitment.
Do I need a proxy, a login or an API key?
No. The store answers plain requests from Apify servers. A proxy setting exists but is off by default, and the actor does not need an account on the store.
Is it legal to scrape MotoSport?
The actor reads publicly visible product pages and no personal data. The terms of use of motosport.com restrict automated collection, so you are responsible for checking that your use is allowed. Contact: contact.punkrecordsdata@gmail.com.
How many products can I get in one run?
A brand run returns all products of the brand (Fox Racing has 1,027), 60 per listing page. A catalog run walks the 28,981 aftermarket products or the 470,246 OEM parts in order, bounded by Maximum items and Maximum scan time, and Catalog start position lets a later run continue where the last one stopped.
Why do some products have no stock information?
Products that need a vehicle to be chosen show no stock message on the page, so available is left out. The In stock only filter returns only rows with a stock answer.
How do I get only products on sale?
Switch on On sale only. The filter uses the sale and clearance flags and the list price of each product, so tires (which have no list price on the page) are not returned.
How do I get only new products or price changes since my last run?
Switch on Only new items, and add Also return price and stock changes to also receive products whose price or stock changed. The state is kept in your own key-value store.
What happens when the search finds nothing or the input is wrong?
A search with no matches ends the run with a message and no charge. A wrong address, unknown brand or unreadable page returns one free error row with the reason, and the other addresses are still processed.
Recommended Actors
More RecordsData scrapers for vehicle markets are in the RecordsData collection, including classified-ad scrapers for used cars and motorcycles.
Need help? contact.punkrecordsdata@gmail.com. Reviews on the actor page help other people find it.
Disclaimer: this is an independent tool, not affiliated with MotoSport. It collects only publicly available data.