airtasker.com APIairtasker.com ↗
Search Airtasker tasks by location, price, and category. Access task details, user profiles, and geocoding data across 6 endpoints.
curl -X GET 'https://api.parse.bot/scraper/78346169-28d6-472e-b840-44ada671f013/search_tasks?limit=3&radius=50000&sort_by=posted_desc&task_types=both&search_term=cleaning&task_states=posted' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for tasks with various filters and pagination. Returns tasks, profiles, locations, and metadata including pagination cursors.
| Param | Type | Description |
|---|---|---|
| lat | string | Latitude for location-based search |
| lon | string | Longitude for location-based search |
| limit | integer | Number of results per page |
| radius | integer | Search radius in meters |
| sort_by | string | Sorting order. Accepted values: posted_desc, posted_asc, price_desc, price_asc |
| carl_ids | string | Category IDs to filter by (e.g. '57' for Cleaning) |
| max_price | integer | Maximum budget filter |
| min_price | integer | Minimum budget filter |
| after_time | string | Cursor for pagination (ISO 8601 timestamp from last task's updated_at) |
| task_types | string | Task types. Accepted values: inperson, remote, both |
| search_term | string | Search keyword (e.g. 'cleaning') |
| task_states | string | Task states. Accepted values: posted, assigned, completed, overdue, closed |
| location_name | string | Display name of the location |
{
"type": "object",
"fields": {
"meta": "object with total count, has_more boolean, and latest_result cursor",
"tasks": "array of task objects with id, name, slug, price, state, deadline, location_ids, sender_id",
"profiles": "array of user profile objects for task posters",
"locations": "array of location objects with id, latitude, longitude, display_name"
},
"sample": {
"data": {
"meta": {
"total": 4,
"has_more": true,
"latest_result": "2026-05-07T18:06:30+10:00"
},
"tasks": [
{
"id": 20119463,
"name": "Pre-move in cleaning",
"slug": "pre-move-in-cleaning-x01kr0qjp2wmnzha03tf6215qx3",
"price": 699,
"state": "posted",
"deadline": "2026-05-26T02:00:00+10:00",
"sender_id": 7198147,
"bids_count": 8,
"location_ids": [
2544551
],
"online_or_phone": false
}
],
"profiles": [
{
"id": 7198147,
"first_name": "Edison",
"average_rating": 0
}
],
"locations": [
{
"id": 2544551,
"latitude": "-31.894489",
"longitude": "115.875201",
"display_name": "Dianella WA, Australia"
}
]
},
"status": "success"
}
}About the airtasker.com API
The Airtasker API exposes 6 endpoints for reading task listings, user profiles, and service categories from Airtasker.com. Use search_tasks to filter open tasks by latitude/longitude, price range, category ID, and sort order, then call get_task_detail with a task slug to retrieve the full task card including description, deadline, offers, and reviews. Location resolution is handled through a two-step get_location_suggestions and get_location_details flow.
Search and Filter Tasks
The search_tasks endpoint accepts up to eight filter parameters: lat and lon for geographic centering, radius in meters, carl_ids for category filtering, min_price/max_price for budget filtering, and sort_by for ordering results by posted_desc, posted_asc, price_desc, or price_asc. Each response includes a meta object with total, has_more, and a latest_result cursor for pagination, alongside parallel arrays for tasks, profiles, and locations. Task objects carry id, name, slug, price, state, deadline, location_ids, and sender_id.
Task Details and User Profiles
get_task_detail takes a task slug (e.g. cleaning-house-for-rent-inspection-x01kj99pnnk2qnkgtrhvz8xnpbb) and returns a structured response with header, taskCard, sections, actions, and stickyFooter components — covering the full description, date, offers received, and user reviews attached to that task. get_user_profile accepts a numeric user_id and an optional task_id slug for context, returning profile card data, review sections, and associated menu items.
Categories and Location Resolution
browse_categories returns all available task categories with their display_name and carl_id arrays — these carl_id values feed directly into the carl_ids parameter of search_tasks. Location lookup uses a two-step flow: get_location_suggestions accepts a free-text query (e.g. Perth WA) and returns suggestion objects with name, source, and external_id; that external_id is then passed to get_location_details to retrieve a precise latitude, longitude, and display_name for use in geographic searches.
- Monitor newly posted cleaning or handyman tasks in a specific city by combining
get_location_detailscoordinates withcarl_idsandsort_by=posted_desc. - Build a price-comparison tool for Airtasker task budgets by filtering
search_taskswithmin_priceandmax_priceacross multiple categories. - Aggregate user reputation data by fetching
get_user_profilefor task posters and extracting review sections and stats. - Populate a category picker in a third-party app by pulling all
display_nameandcarl_idvalues frombrowse_categories. - Geocode user-entered location strings into lat/lon pairs using
get_location_suggestionsfollowed byget_location_details. - Track task availability and deadline density in a geographic radius by paginating
search_taskswithlat,lon, andradius. - Analyse task offer counts and review sentiment per category by joining
get_task_detailresponses with their associatedprofilesdata.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Airtasker have an official public developer API?+
What does `search_tasks` return beyond the task list itself?+
search_tasks returns three parallel arrays alongside the task list: profiles (poster profile objects), locations (with latitude, longitude, and display_name per location ID), and a meta object containing total, has_more, and a latest_result cursor you can use for paginating through large result sets.Does the API return task offers or bids submitted by workers?+
get_task_detail response under the taskCard and sections components for an individual task. The search_tasks endpoint does not surface per-task offer counts in its results array. You can fork this API on Parse and revise it to extract and surface offer detail fields as a dedicated endpoint.Is private or login-required task data accessible through this API?+
How does location-based search work across these endpoints?+
get_location_suggestions with a text query to receive suggestion objects including an external_id. Pass that external_id to get_location_details to get a latitude and longitude. Supply those coordinates to search_tasks via the lat, lon, and optional radius parameters to scope results geographically.