Skip to main content
REST API

API Documentation

Access SkillsMP Skills data programmatically through our REST API. Supports keyword search plus category, occupation, and detected Skill content-language filters.

Authentication
Endpoints

GET /api/v1/skills/search

Search skills using keywords

ParameterTypeRequiredDescription
qstring✓Search query
pagenumber-Page number (default: 1)
limitnumber-Items per page (default: 20; maximum: 50)
sortBystring-Sort order: stars | recent (default: stars)
categorystring-Filter by category slug (e.g. data-ai, devops).
occupationstring-Filter by SOC occupation slug (e.g. software-developers).
languagestring-Filter by detected Skill content language. Use an ISO code such as en, zh, or ja; mul selects mixed-language content and und selects undetermined content.

Rate Limits

  • *Anonymous (no API key): 50 requests/day, 10 requests/min — keyword search only
  • *Authenticated (with API key): 500 requests/day, 30 requests/min — keyword search
  • *Wildcard searches (e.g. *) are not supported

When present, these REST search response headers report daily quota usage:

HeaderDescription
X-RateLimit-Daily-LimitYour daily request limit
X-RateLimit-Daily-RemainingRemaining requests for today
Code Examples

Keyword Search

curl -X GET "https://skillsmp.com/api/v1/skills/search?q=SEO" \
  -H "Authorization: Bearer sk_live_your_api_key"

Search with occupation filter

curl -X GET "https://skillsmp.com/api/v1/skills/search?q=automation&occupation=software-developers&language=zh&sortBy=stars" \
  -H "Authorization: Bearer sk_live_your_api_key"
Error Handling

Both minute and daily HTTP 429 responses include Retry-After; wait at least that many seconds. For HTTP 503, also honor Retry-After. Correct HTTP 400 parameters before retrying. Admitted keyword attempts, including parameter errors and minute-limit rejections, consume daily quota.

Error CodeHTTPDescription
INVALID_API_KEY401Invalid API key
MISSING_QUERY400Missing required query parameter
INVALID_QUERY400Query must contain a letter or number
INVALID_PAGE400Page must appear at most once as a positive integer
INVALID_LIMIT400Limit must appear at most once as an integer from 1 to 50
INVALID_OCCUPATION400Unknown occupation slug
INVALID_LANGUAGE400Unknown content language code
DAILY_QUOTA_EXCEEDED429Daily API quota exceeded
RATE_LIMITED429Minute request limit exceeded
SEARCH_INDEX_UNAVAILABLE503Search index temporarily unavailable
RATE_LIMIT_UNAVAILABLE503Rate-limit coordination temporarily unavailable
AUTH_UNAVAILABLE503Authentication temporarily unavailable
INTERNAL_ERROR500Internal server error

Error Response Example:

json
{
  "success": false,
  "error": {
    "code": "INVALID_API_KEY",
    "message": "The provided API key is invalid"
  }
}