Waze Traffic Scraper
Pricing
Pay per event
Waze Traffic Scraper
Extract real-time traffic data from Waze including accidents, hazards, police reports, road closures, and live traffic congestion. Perfect for logistics routing, fleet optimization, and traffic analysis.
Pricing
Pay per event
Rating
5.0
(2)
Developer

Phantom Coder
Actor stats
2
Bookmarked
3
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
Extract real-time traffic data from Waze including accidents, hazards, police reports, road closures, and live traffic congestion. Perfect for logistics routing, fleet optimization, and traffic analysis.
📦 What you get
- Traffic alerts: Accidents, hazards, road closures, police traps, construction zones
- Traffic jams: Real-time congestion with speed, severity, and delay information
- User activity: Waze user locations (anonymized by default for privacy)
- Configurable area: Search any location with custom radius
⚠️ Important: Understanding empty results
Getting 0 alerts or 0 jams is completely normal! This simply means there's no traffic data in that location at that specific moment. The Actor is working correctly.
How to verify the Actor is working:
- ✅ If you see any users in the results, the Actor is working perfectly
- ⚠️ If you get 0 alerts, 0 jams, AND 0 users, this might indicate an issue, though in very remote areas or during off-peak hours, this could occasionally be legitimate
Many locations have quiet periods with no incidents. Try a busy city center during rush hour for more data, or schedule runs every few minutes to capture data as it appears.
⚙️ Input
Configure what data to collect and where:
| Field | Type | Required | Description |
|---|---|---|---|
latitude | number | Yes | Center point latitude (e.g., 40.7128 for NYC) |
longitude | number | Yes | Center point longitude (e.g., -74.0060 for NYC) |
radiusKm | number | No | Search radius in kilometers (default: 10, max: 100) |
includeAlerts | boolean | No | Include traffic alerts (default: true) |
includeTrafficJams | boolean | No | Include traffic jams (default: true) |
anonymizeUsernames | boolean | No | Remove usernames for privacy (default: true, recommended) |
Example input:
{"latitude": 34.0522,"longitude": -118.2437,"radiusKm": 15,"includeAlerts": true,"includeTrafficJams": true,"anonymizeUsernames": true}
📊 Output
The scraper returns structured data with human-readable fields:
Alert structure
{"id": "alert-123456/abc-def-ghi","uuid": "abc-def-ghi-jkl-mno","type": "ACCIDENT","subtype": "ACCIDENT_MAJOR","description": "Multi-vehicle accident","location": {"x": -118.2437,"y": 34.0522},"reportedAt": "2026-01-26T15:30:00.000Z","reportedAtMillis": 1737907800000,"reliability": 10,"confidence": 8,"source": "Waze User","reportedBy": "User","thumbsUp": 15,"commentCount": 3,"comments": [...]}
Traffic jam structure
{"uuid": "jam-xyz-123-abc","street": "I-405 North","city": "Los Angeles","country": "US","level": 4,"severity": "Severe","type": "Large","speedKmh": 8.5,"speedMph": 5,"lengthMeters": 1200,"lengthMiles": "0.75","delaySeconds": 420,"delayMinutes": 7,"reportedAt": "2026-01-26T15:35:00.000Z","reportedAtMillis": 1737908100000,"route": [{ "x": -118.243, "y": 34.052 },{ "x": -118.244, "y": 34.053 }]}
📖 Understanding the data
Alert types
ACCIDENT: Traffic accidents (MINOR, MAJOR)HAZARD: Road hazards (ON_ROAD, ON_SHOULDER, CONSTRUCTION, WEATHER)POLICE: Police presence or speed traps (user-reported)ROAD_CLOSED: Road closuresWEATHERHAZARD: Weather-related hazards
Traffic jam severity levels
- Level 1: Light traffic - minimal slowdown
- Level 2: Moderate traffic - noticeable delay
- Level 3: Heavy traffic - significant slowdown
- Level 4: Severe traffic - very slow movement
- Level 5: Standstill - traffic at a complete stop
Reliability scores
- Reliability (0-10): Overall trustworthiness based on reporter history and confirmations
- Confidence (0-10): Waze's internal confidence based on number of reports and validations
- Thumbs up: Number of users who confirmed the alert is still accurate
Timestamps
All timestamps are provided in two formats:
reportedAt: Human-readable ISO 8601 format (e.g., "2026-01-26T15:30:00.000Z")reportedAtMillis: Unix timestamp in milliseconds for calculations
To convert millis to a date:
const date = new Date(1737907800000);console.log(date.toISOString()); // "2026-01-26T15:30:00.000Z"
⚠️ Important limitations
199 alert cap: Waze returns a maximum of 199 alerts per query, regardless of area size. In busy cities, this means you'll only see a fraction of all alerts.
Single snapshot: Each run captures one moment in time. Alerts appear and disappear within minutes.
Better coverage: For comprehensive monitoring, schedule the scraper to run every 3-5 minutes. This can capture 50-70% of alerts in busy areas instead of just 10-20%.
Radius optimization: Larger areas don't always give more data due to the 199 cap. In dense cities, use a smaller radius (3-5 km) to focus on your area of interest, or run multiple locations.
💼 Common use cases
- Logistics routing: Optimize delivery routes with real-time traffic conditions
- Fleet management: Monitor traffic patterns across multiple locations
- Urban planning: Analyze traffic patterns and incident frequency
- Traffic monitoring: Track incidents in real-time for specific areas
- Research: Study traffic trends and congestion patterns over time
- Alert systems: Build notifications for specific types of incidents
⏰ Scheduling for better coverage
To capture more data, schedule regular runs:
Every 5 minutes (Apify cron: */5 * * * *)
- Cost: ~$2-3/month for one location
- Coverage: 50-70% of alerts
Every 10 minutes (Apify cron: */10 * * * *)
- Cost: ~$1-2/month for one location
- Coverage: 30-50% of alerts
Every 30 minutes (Apify cron: */30 * * * *)
- Cost: ~$0.50/month for one location
- Coverage: 15-25% of alerts
💡 Cost savings tip: Higher Apify subscription tiers (Bronze, Silver, Gold) offer volume discounts on pay-per-event charges. With a Gold plan, you can save up to 70% compared to the base price.
💡 Tips for best results
- Start with a medium radius (10 km) and adjust based on results
- Keep anonymizeUsernames enabled for privacy protection (enabled by default)
- Monitor alert counts - if you consistently get exactly 199 alerts, try a smaller radius
- Multiple locations - for city-wide coverage, run multiple smaller areas instead of one large area
- Frequent runs - schedule every 3-5 minutes for better coverage in busy areas
🔒 Privacy and ethical use
This scraper collects publicly visible data. User data is anonymized by default to protect privacy.
Recommendations:
- Keep
anonymizeUsernamesenabled (default) - Don't use this data to track, stalk, or harass individuals
- Comply with local privacy laws (GDPR, CCPA, etc.)
- Use data for legitimate purposes like research, traffic analysis, or public safety
What we do:
- Only access publicly available data
- Anonymize user information by default
- Provide privacy controls (anonymization options)
- Warn users about privacy implications
- Don't bypass any authentication or restrictions
💬 Support
Have questions or issues? Please create an issue in the Actor's Issues tab on Apify.