Skip to content

Schedules

Schedules run your workflows automatically on a recurring basis.

  1. Go to Schedules > New Schedule
  2. Set a name, frequency, time, and timezone
  3. Optionally select a specific workflow (or leave blank for automatic domain-based routing)
  4. Optionally filter by URL tags
  5. Save and enable

| Frequency | Cron equivalent | Description | |-----------|----------------|-------------| | Hourly | 0 * * * * | Every hour on the hour | | Daily | 0 9 * * * | Every day at a specific time | | Weekly | 0 9 * * 1 | Once a week on a specific day | | Monthly | 0 9 1 * * | Once a month on a specific day | | Custom | Any valid cron | Full cron expression control |

  1. The scheduler polls every 30 seconds for due schedules
  2. For each due schedule, it resolves matching URLs (by tag filters)
  3. Each URL is matched to a workflow by domain routing
  4. Jobs are created and published to the queue with per-org fairness
  5. The schedule's nextRunAt is updated to the next occurrence

Schedules can filter which URLs they process using tags. A schedule with tagFilters: ["electronics", "domain:amazon.com"] processes URLs that have ANY of those tags.

A schedule with no tag filters processes all URLs in your library.

If a schedule has no explicit workflowId, URLs are matched to workflows by domain:

  1. URL https://amazon.com/product/123 has tag domain:amazon.com
  2. Workflow with route domain:amazon.com matches
  3. If no domain match, the default (*) workflow is used

Trigger a schedule immediately from the dashboard or API without waiting for the next run:

Terminal window
curl -X POST https://dashboard.justcrawl.io/api/v1/schedules/SCHEDULE_ID/trigger \
-H "Authorization: Bearer YOUR_API_KEY"

Toggle a schedule on or off without deleting it:

Terminal window
curl -X PATCH https://dashboard.justcrawl.io/api/v1/schedules/SCHEDULE_ID/toggle \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"isEnabled": false}'