RunSignup Race Scraper
Pricing
from $4.00 / 1,000 basic races
RunSignup Race Scraper
Extracts public race listings, sub-events, registration fee ladders, price-change dates, race information sections, and sponsor rosters from RunSignup.
Pricing
from $4.00 / 1,000 basic races
Rating
0.0
(0)
Developer
Hypebridge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
What does RunSignup Race Scraper do?
RunSignup Race Scraper extracts public race listings, sub-events, registration fee ladders, price-change dates, race information sections, and sponsor rosters from RunSignup. It accepts RunSignup search pages and individual race pages, plus equivalent TriSignup, BikeSignup, and GiveSignup URLs.
Use it to build race calendars, watch registration prices, research endurance-event markets, find sponsorship opportunities, or maintain a structured race directory. Results are saved as one record per race, with sub-events and sponsors nested inside it.
What race data can it extract?
| Data | Description |
|---|---|
| Race identity | Name, canonical URL, race ID, logo, and public contact-form link |
| Dates and location | Next and previous dates, timezone, street, city, state, ZIP code, and country |
| Registration | Open status, event-level registration windows, current price, next price, and price-change date |
| Sub-events | Event name, type, distance, start/end time, giveaway options, and returning-event links |
| Race information | Description plus sections such as packet pickup, maps, parking, and results |
| Public links | Organizer website, results URL, and public Facebook identifiers when available |
| Sponsors | Sponsor name, website, logo, and ID when sponsor lookup is enabled |
The sponsors field deliberately distinguishes three states: null means no lookup was requested, [] means the race was checked and has no sponsors, and a populated array contains the confirmed sponsor roster.
How to scrape RunSignup races
- Open RunSignup Race Scraper in Apify.
- Keep the default
https://runsignup.com/RacesURL or paste a filtered search/race URL. - Set Maximum races to control the amount of data and cost.
- Enable Get sponsor rosters only when you need sponsor data; those checks are intentionally sequential and take longer.
- Click Start, then download the Dataset as JSON, CSV, Excel, or HTML.
Large searches are automatically divided into bounded geographic and date windows so the actor can continue beyond RunSignup's per-query result ceiling. The global maxRaces cap always applies across every input URL.
Input examples
Search California races in a date window:
{"startUrls": [{ "url": "https://runsignup.com/Races?state=CA" }],"startDate": "2026-10-01","endDate": "2026-12-31","maxRaces": 500,"getSponsors": false}
Search several regions for selected disciplines:
{"startUrls": [{ "url": "https://runsignup.com/Races" }],"states": ["IL", "IN", "WI"],"eventTypes": ["running_race", "trail_race"],"maxRaces": 1000}
Get one race with its sponsor roster:
{"startUrls": [{ "url": "https://runsignup.com/Race/IL/Chicago/ExampleCityMarathon" }],"maxRaces": 1,"getSponsors": false}
Direct race URLs are always fetched as detailed records and always include a sponsor check, regardless of the global sponsor toggle.
Input reference
| Parameter | Default | Description |
|---|---|---|
startUrls | RunSignup races directory | Up to 100 search or race URLs |
maxRaces | 100 | Global unique-race cap; maximum 50,000 |
getSponsors | false | Perform bounded sponsor checks for discovered races |
states | [] | Two-letter US state or Canadian province codes |
country | US | Region set and output post-filter: US, CA, or any |
startDate, endDate | today, +1 year | Absolute or relative date window |
eventTypes | [] | One or more RunSignup discipline filters |
nameQuery | — | Race-name filter for search inputs |
minDistance, maxDistance | — | Numeric distance bounds |
zipcode, radius | —, 25 | US ZIP-centred radius search |
modifiedSince | — | Incremental refresh filter |
includeInfoSections | true | Include public information sections at no extra request cost |
maxSponsorLookups | 200 | Hard run-duration guard for sponsor checks |
Optional RunSignup API credentials can be supplied as a secret key/secret pair. The actor verifies their available pagination capability at run start and safely falls back to partitioned discovery when necessary.
Output example
{"raceId": 123456,"name": "Example City Marathon","url": "https://runsignup.com/Race/IL/Chicago/ExampleCityMarathon","sourceMode": "search","nextDate": "2026-10-18T00:00:00.000-05:00","address": {"city": "Chicago","state": "IL","countryCode": "US"},"eventCount": 2,"minCurrentPrice": 35,"maxCurrentPrice": 85,"nextRacePriceIncreaseAt": "2026-09-15T00:00:00.000-05:00","events": [{"eventId": 654321,"name": "Half Marathon","distance": "13.1 Miles","currentPrice": 75,"nextPrice": 85,"priceIncreaseAmount": 10,"registrationStatus": "open"}],"sponsors": null,"scrapedAt": "2026-09-04T12:00:00.000Z"}
How much does it cost?
This actor uses pay-per-event pricing. The current dollar price for each event is shown in the Apify run console before you start.
| Event | Charged when |
|---|---|
race-basic | A race is saved without a completed sponsor lookup |
race-detailed | A race is saved after its requested sponsor check, including a confirmed no-sponsors result |
Duplicates, drafts, invalid records, failed writes, and failed direct URLs are not charged. Use maxRaces and maxSponsorLookups as firm spend and runtime controls.
Tips and limitations
- Use filtered search URLs or
statesfor targeted runs; broad searches are complete within the configured date window but require more requests. - Sponsor checks follow RunSignup's one-request-per-second race-page policy and are usually the slowest part of a run.
- Fee timestamps are evaluated in each race's local timezone, so current and upcoming prices stay accurate around midnight.
- This is a public race-prospecting feed, not a race-director email database. Organizer contact is routed through RunSignup's public contact form.
- A very dense state/day can still exceed 1,000 races. The actor reports that rare truncation instead of recursing without a bound.
FAQ
Can I scrape one RunSignup race page?
Yes. Paste any supported race, information, events, sponsors, or registration URL. The actor resolves it to the canonical race, returns full event details, and checks sponsors.
Does it support TriSignup and BikeSignup links?
Yes. TriSignup, BikeSignup, and GiveSignup links are accepted and normalized to the canonical RunSignup race record.
Is scraping RunSignup legal?
The actor extracts publicly available race data. Always review the source site's terms and applicable laws, and use the data for a legitimate purpose.
Support
- Report bugs or feature requests in the Issues tab.
- Use the API tab for programmatic runs and integrations.
Disclaimer: This actor extracts public information only. Public results may still contain personal data protected by privacy laws. Do not collect or use personal data without a legitimate legal basis; consult qualified counsel if you are unsure.