Skip to main content
EVO Dialed uses ScrapeCreators as the primary service for scraping social media data.

Overview

ScrapeCreators provides:
  • Profile data (handle, followers, bio)
  • Post/video lists
  • Engagement metrics
  • Media URLs

Cost model

ScrapeCreators bills per request:

Facebook billing

Facebook charges per-post (not per-profile):
  • Each post = 1 request
  • High-volume creators = higher cost

Sync schedule

Nightly sync

  • Time: 10pm ET daily
  • Scope: Full roster (~1,149 accounts)
  • Job: Metrics::SyncJob
Avoid deploying between 10pm-10:15pm ET to prevent sync interruption.

Manual sync

Individual accounts can be synced manually:
  • 24-hour throttle per account
  • Prevents excessive API usage

Configuration

Environment variables

Both SCRAPE_CREATORS_API_KEY vars hold the same key since July 2026. The old primary key was retired.

API client

File: app/services/integrations/scrape_creators_client.rb

Methods

Sync flow

Health monitoring

SyncWatchdogJob

Runs every 15 minutes:
  • Checks for stuck syncs
  • Monitors completion rates
  • Alerts on failures

CreditsAlert

Monitors API credit balance:
  • Alerts when credits low
  • Re-arms on recovery
  • Pings Rafael + Brandon

Slack reporting

Metrics::SyncSlackReporter posts to Slack:
  • Sync start notification
  • Completion summary
  • Error counts

Error handling

Transient errors

  • Network timeouts: Auto-retry
  • Rate limits: Backoff and retry
  • API errors: Log and continue

Persistent errors

  • Account banned: Mark sync_failed
  • Invalid handle: Mark sync_failed
  • Auth issues: Require re-auth

Kill switch

Emergency pause all syncs:
Use when:
  • API outage detected
  • Cost overrun risk
  • Data quality issues

Troubleshooting

Common issues

Debug sync

Backend implementation

Key files:
  • app/services/integrations/scrape_creators_client.rb
  • app/jobs/metrics/sync_job.rb
  • app/services/metrics/sync_slack_reporter.rb
  • app/services/metrics/credits_alert.rb