Free & No Auth Required

Developer API

Parse, validate, humanize, and convert cron expressions programmatically. All endpoints return JSON.

REST API

Simple GET endpoints with query parameters

Fast

All parsing runs server-side, no external dependencies

Rate Limited

100 requests per minute per IP

Base URL

https://crontool.io
GET/api/parse

Parse a cron expression into its individual fields with types and expanded values.

Parameters

expressionrequiredThe cron expression to parse (5 fields, standard format)

Try it now

/api/parse?

Example Response

{
  "expression": "*/5 * * * *",
  "fields": {
    "minute": {
      "type": "step",
      "values": [
        0,
        5,
        10,
        15,
        20,
        25,
        30,
        35,
        40,
        45,
        50,
        55
      ],
      "raw": "*/5"
    },
    "hour": {
      "type": "wildcard",
      "values": [
        0,
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11,
        12,
        13,
        14,
        15,
        16,
        17,
        18,
        19,
        20,
        21,
        22,
        23
      ],
      "raw": "*"
    },
    "dayOfMonth": {
      "type": "wildcard",
      "values": [
        1,
        2,
        3,
        "...",
        31
      ],
      "raw": "*"
    },
    "month": {
      "type": "wildcard",
      "values": [
        1,
        2,
        3,
        "...",
        12
      ],
      "raw": "*"
    },
    "dayOfWeek": {
      "type": "wildcard",
      "values": [
        0,
        1,
        2,
        3,
        4,
        5,
        6
      ],
      "raw": "*"
    }
  }
}

Code Snippets

curl "https://crontool.io/api/parse?expression=*/5+*+*+*+*"
GET/api/validate

Validate whether a cron expression is syntactically correct.

Parameters

expressionrequiredThe cron expression to validate

Try it now

/api/validate?

Example Response

{
  "expression": "*/5 * * * *",
  "valid": true
}

Code Snippets

curl "https://crontool.io/api/validate?expression=*/5+*+*+*+*"
GET/api/next

Get the next scheduled execution times for a cron expression.

Parameters

expressionrequiredThe cron expression
countoptionalNumber of executions to return (1–25) (default: 5)
timezoneoptionalIANA timezone (e.g. America/New_York) (default: UTC)

Try it now

/api/next?

Example Response

{
  "expression": "0 9 * * 1-5",
  "timezone": "UTC",
  "count": 3,
  "next": [
    "2026-03-23T09:00:00.000Z",
    "2026-03-24T09:00:00.000Z",
    "2026-03-25T09:00:00.000Z"
  ]
}

Code Snippets

curl "https://crontool.io/api/next?expression=0+9+*+*+1-5&count=3&timezone=UTC"
GET/api/humanize

Convert a cron expression into a human-readable English description.

Parameters

expressionrequiredThe cron expression to describe

Try it now

/api/humanize?

Example Response

{
  "expression": "30 9 * * 1-5",
  "description": "Every weekday at 9:30 AM"
}

Code Snippets

curl "https://crontool.io/api/humanize?expression=30+9+*+*+1-5"
GET/api/convert

Convert a cron expression between different formats (standard, Quartz, AWS, etc.).

Parameters

expressionrequiredThe cron expression to convert
torequiredTarget format: standard, quartz, aws, vercel, github-actions
fromoptionalSource format (auto-detected if omitted) (default: auto-detected)

Try it now

/api/convert?

Example Response

{
  "expression": "*/5 * * * *",
  "from": "standard",
  "to": "quartz",
  "converted": "0 */5 * * * ?"
}

Code Snippets

curl "https://crontool.io/api/convert?expression=*/5+*+*+*+*&to=quartz"

Error Responses

All endpoints return errors in this format:

{
  "statusCode": 400,
  "message": "Missing required parameter: expression"
}

Status Codes

200Successful response
400Invalid input — missing parameter, invalid expression, or invalid format
429Rate limit exceeded — 100 requests per minute per IP

Rate Limiting

All API endpoints are rate limited to 100 requests per minute per IP address. Rate limit headers are included in every response:

X-RateLimit-LimitMaximum requests per window (100)
X-RateLimit-RemainingRequests remaining in current window
X-RateLimit-ResetUnix timestamp when the window resets