Find airdrop opportunities by phase, task and reward type. Returns matching projects with participation tasks, phase, reward type, task summary and project identifiers. Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0072 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
Up to 0.0072 credits / call
The final charge is based on confirmed usage. Unused reserved credits return to your available balance.
Surf
Crypto Airdrop Tracker by Coin and Phase | Surf
Find airdrop opportunities by phase, task and reward type. Returns matching projects with participation tasks, phase, reward type, task summary and project identifiers. Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0072 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
You receive
Returns matching projects with participation tasks, phase, reward type, task summary and project identifiers. Task and phase filters narrow recorded opportunities. Verify participation rules at the project's official source before acting.
Start with your task
Find crypto airdrops. Use [project or coin name] if I provide one; otherwise show the default results. I can add [tasks currently open] or [point rewards]. Explain the listed tasks and rewards in plain language.
Inputs & outputs
Inspect the current inputs, availability, and maximum charge before starting.
Input schema
Input schema
Field / Path
Type
Requirement
Meaning
queryParamsqueryParams
object
Optional
qqueryParams.q
string
Optional
Search keyword for coin name. Example: airdrop.
Minimum length
2
Maximum length
100
limitqueryParams.limit
integer
Optional
Results per page. Example: 20. Defaults to 20.
Default
20
Minimum
1
Maximum
100
orderqueryParams.order
string
Optional
Sort order. Example: desc. Defaults to "desc".
Default
desc
Options
asc, desc
phasequeryParams.phase
string
Optional
Comma-separated lifecycle phases. active = tasks open, can participate (POTENTIAL + CONFIRMED). claimable = eligible, can claim (SNAPSHOT + VERIFICATION + REWARD_AVAILABLE). completed = done (DISTRIBUTED). Defaults to active,claimable to show actionable airdrops. Example: active. Defaults to "active,claimable".
Default
active,claimable
Minimum length
1
offsetqueryParams.offset
integer
Optional
Pagination offset. Example: 0. Defaults to 0.
Default
0
Minimum
0
Maximum
9007199254740991
sort_byqueryParams.sort_by
string
Optional
Field to sort results by. Example: last_status_update. Defaults to "last_status_update".
Default
last_status_update
Options
total_raise, xscore, last_status_update
has_openqueryParams.has_open
boolean
Optional
Only return activities with currently OPEN tasks. Example: True. Defaults to false.
Default
false
task_typequeryParams.task_type
string
Optional
Filter activities containing tasks of this type. Example: social.
Find airdrop opportunities by phase, task and reward type
How to use this Tool
Use the deployed input fields below. Required fields must be supplied; optional filters narrow the result.
queryParams.q (Optional): Search keyword for coin name. Example: airdrop.
queryParams.limit (Optional): Results per page. Example: 20. Defaults to 20.
queryParams.order (Optional): Sort order. Example: desc. Defaults to "desc".
queryParams.phase (Optional): Comma-separated lifecycle phases. active = tasks open, can participate (POTENTIAL + CONFIRMED). claimable = eligible, can claim (SNAPSHOT + VERIFICATION + REWARD_AVAILABLE). completed = done (DISTRIBUTED). Defaults to active,claimable to show actionable airdrops. Example: active. Defaults to "active,claimable".
queryParams.offset (Optional): Pagination offset. Example: 0. Defaults to 0.
queryParams.sort_by (Optional): Field to sort results by. Example: last_status_update. Defaults to "last_status_update".
queryParams.has_open (Optional): Only return activities with currently OPEN tasks. Example: True. Defaults to false.
queryParams.task_type (Optional): Filter activities containing tasks of this type. Example: social.
queryParams.reward_type (Optional): Filter by reward type. Example: airdrop.
queryParams.include_tasks (Optional): Include full task list per activity. Example: True. Defaults to false.
What this Tool returns
Returns matching projects with participation tasks, phase, reward type, task summary and project identifiers.
Response fields and how to read them
The table follows the official response contract, including nested fields and useful response metadata. [] denotes an array item. Required means required within its parent object, not that a conditional parent always exists. A nullable type permits null; an optional field can be absent. Use the documented conditions below to distinguish missing, empty and zero values. Units and reporting windows apply only where explicitly documented.
Field, type and presence
Meaning and conditions
data.[].coin_symbol
string; Optional within parent
Token ticker symbol
data.[].followers_count
integer; Required within parent; format: int64
X/Twitter follower count (0 if unknown)
data.[].last_status_update
integer; Required within parent; format: int64
Last status change as Unix seconds
data.[].logo_url
string; Optional within parent
Project logo image URL
data.[].project_id
string; Optional within parent
Surf project UUID if linked
data.[].project_name
string; Required within parent
Project/coin name
data.[].reward_date
integer; Required within parent; format: int64
Expected reward date as Unix seconds (0 if unknown)
data.[].reward_type
string; Optional within parent
data.[].task_summary
object; Optional within parent
Aggregated task statistics
data.[].task_summary.open
integer; Required within parent; format: int32
Number of currently open tasks
data.[].task_summary.total
integer; Required within parent; format: int32
Total number of tasks
data.[].task_summary.types
array | null; Required within parent
Distinct task types
data.[].tasks
array | null; Optional within parent
Full task list (only with include_tasks=true)
data.[].tasks.[].blockchains
array | null; Optional within parent
Supported blockchain names
data.[].tasks.[].close_date
integer; Required within parent; format: int64
Task close date as Unix seconds (0 if unknown)
data.[].tasks.[].cost
integer; Required within parent; format: int32
Participation cost in USD (0 = free)
data.[].tasks.[].external_link
string; Optional within parent
Public participation URL
data.[].tasks.[].is_exclusive
boolean; Required within parent
Whether task is exclusive
data.[].tasks.[].open_date
integer; Required within parent; format: int64
Task open date as Unix seconds (0 if unknown)
data.[].tasks.[].status
string; Required within parent
Task status: OPEN, CLOSED, UPCOMING
data.[].tasks.[].time_minutes
integer; Required within parent; format: int32
Estimated time in minutes
data.[].tasks.[].title
string; Required within parent
Task title
data.[].tasks.[].type
string; Required within parent
Task type: social, testnet, mainnet, staking, trading, etc.
data.[].total_raise
integer; Required within parent; format: int64
Total project fundraise in USD (0 if unknown)
data.[].xscore
integer; Required within parent; format: int64
CryptoRank social score (0 if unknown)
meta.cached
boolean; Required within parent
Whether this response was served from cache
meta.credits_used
integer; Required within parent; format: int64
Credits deducted for this request
meta.empty_reason
string; Optional within parent
Hint explaining why the data array is empty, when applicable
meta.has_more
boolean; Optional within parent
Whether more items may exist beyond this response. For offset-paged endpoints, continue with a larger offset. For time-series endpoints without offset/cursor controls, true means the requested time range hit an upstream cap; narrow from/to to continue. Omitted when exhaustion cannot be proven.
meta.limit
integer; Required within parent; format: int64
Maximum number of items returned in this response
meta.offset
integer; Required within parent; format: int64
Number of items skipped (pagination offset)
meta.total
integer; Optional within parent; format: int64
Total number of matching items (before pagination). Omitted when total is unknown.
meta.watermark
integer; Optional within parent; format: int64
Warehouse watermark (Unix seconds) this response was computed at, on warehouse-backed endpoints (e.g. Hyperliquid /trades/aggregate) — rows up to this time come from the warehouse, newer rows from the live tail. Omitted elsewhere.
Coverage, units and freshness
Task and phase filters narrow recorded opportunities. Verify participation rules at the project's official source before acting.
Inspect any returned observation time, cache status, watermark, pagination and errors using their documented meanings. A successful request alone does not establish complete coverage. Where no freshness or completeness guarantee is documented, treat it as unknown. Saved Examples are historical and viewing them does not refresh data or execute a new call.
Data source and references
Surf supplies this endpoint through its Data API. Response contract and deployed Tool inputs reviewed on 2026-10-03 against official OpenAPI v0.2.102. This is a contract review date, not a data observation time. Coverage depends on the selected endpoint and request.
Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0072 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
Example request: [Find airdrops with tasks that are currently open].
Find crypto airdrops. Use [project or coin name] if I provide one; otherwise show the default results. I can add [tasks currently open] or [point rewards]. Explain the listed tasks and rewards in plain language.
Choose a reward and see the tasks
Example request: [Find airdrops with point rewards and list all the tasks].
Questions about this tool.
Inputs, results and details to know before running it.
Enter a project or coin name if you have one. You can also describe the kind of tasks or rewards you want, such as tasks that are currently open or point rewards. No wallet address or contract code is needed. This Tool searches listings; it does not check whether your wallet qualifies for a reward.
Returns matching projects with participation tasks, phase, reward type, task summary and project identifiers.
Task and phase filters narrow recorded opportunities. Verify participation rules at the project's official source before acting.
Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0072 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
Ask your AI to search by a project or coin name, or describe the kind of tasks or rewards you want to see. No wallet address or contract code is needed.
Inspect any returned observation time, cache status, watermark, pagination and errors using their documented meanings. A successful request alone does not establish complete coverage. Where no freshness or completeness guarantee is documented, treat it as unknown. Saved Examples are historical and viewing them does not refresh data or execute a new call.