Upwork关键词搜索 API
POST
接口健康状态
- 24h 健康值
- 正常
- 24h 平均耗时
- —
- 最近检查时间
- 2026年9月26日 23:30(北京时间)
- 健康 / 正常
- 可用
- 少量可用
- 基本不可用
健康 API正常
24 小时趋势
30 天趋势
健康值怎么算
- 健康值 = 返回了数据的调用占比(百分比)。空结果、失败和结果未知都不算返回数据。
- 档位:≥90% 健康、≥70% 可用、≥40% 少量可用,更低是基本不可用。
- 一个时段(24 小时、每小时、每天)调用满 50 次才计算健康值;不足的时段显示为正常——少量调用里的偶发失败不代表接口不可用。
- 调用包括客户的真实调用和我们每天的探测调用;请求本身的错误(参数不对、余额不足)不计入。
- 平均耗时只算正常返回的调用:同步取响应时间,异步取受理到完成。
逐时段数据
| 时间(北京时间) | 状态 | 健康值 | 平均耗时 |
|---|---|---|---|
| 2026-09-26 23:00 - 23:59 | 正常 | — | — |
| 2026-09-26 22:00 - 22:59 | 正常 | — | — |
| 2026-09-26 21:00 - 21:59 | 正常 | — | — |
| 2026-09-26 20:00 - 20:59 | 正常 | — | — |
| 2026-09-26 19:00 - 19:59 | 正常 | — | — |
| 2026-09-26 18:00 - 18:59 | 正常 | — | — |
| 2026-09-26 17:00 - 17:59 | 正常 | — | — |
| 2026-09-26 16:00 - 16:59 | 正常 | — | — |
| 2026-09-26 15:00 - 15:59 | 正常 | — | — |
| 2026-09-26 14:00 - 14:59 | 正常 | — | — |
| 2026-09-26 13:00 - 13:59 | 正常 | — | — |
| 2026-09-26 12:00 - 12:59 | 正常 | — | — |
| 2026-09-26 11:00 - 11:59 | 正常 | — | — |
| 2026-09-26 10:00 - 10:59 | 正常 | — | — |
| 2026-09-26 09:00 - 09:59 | 正常 | — | — |
| 2026-09-26 08:00 - 08:59 | 正常 | — | — |
| 2026-09-26 07:00 - 07:59 | 正常 | — | — |
| 2026-09-26 06:00 - 06:59 | 正常 | — | — |
| 2026-09-26 05:00 - 05:59 | 正常 | — | — |
| 2026-09-26 04:00 - 04:59 | 正常 | — | — |
| 2026-09-26 03:00 - 03:59 | 正常 | — | — |
| 2026-09-26 02:00 - 02:59 | 正常 | — | — |
| 2026-09-26 01:00 - 01:59 | 正常 | — | — |
| 2026-09-26 00:00 - 00:59 | 正常 | — | — |
| 2026-09-26 | 正常 | — | — |
| 2026-09-25 | 正常 | — | — |
| 2026-09-24 | 正常 | — | — |
| 2026-09-23 | 正常 | — | — |
| 2026-09-22 | 正常 | — | — |
| 2026-09-21 | 正常 | — | — |
| 2026-09-20 | 正常 | — | — |
| 2026-09-19 | 正常 | — | — |
| 2026-09-18 | 正常 | — | — |
| 2026-09-17 | 正常 | — | — |
| 2026-09-16 | 正常 | — | — |
| 2026-09-15 | 正常 | — | — |
| 2026-09-14 | 正常 | — | — |
| 2026-09-13 | 正常 | — | — |
| 2026-09-12 | 正常 | — | — |
| 2026-09-11 | 正常 | — | — |
| 2026-09-10 | 正常 | — | — |
| 2026-09-09 | 正常 | — | — |
| 2026-09-08 | 正常 | — | — |
| 2026-09-07 | 正常 | — | — |
| 2026-09-06 | 正常 | — | — |
| 2026-09-05 | 正常 | — | — |
| 2026-09-04 | 正常 | — | — |
| 2026-09-03 | 正常 | — | — |
| 2026-09-02 | 正常 | — | — |
| 2026-09-01 | 正常 | — | — |
| 2026-08-31 | 正常 | — | — |
| 2026-08-30 | 正常 | — | — |
| 2026-08-29 | 正常 | — | — |
| 2026-08-28 | 正常 | — | — |
关键词搜索:返回列表,默认 20 条、单次最多 100 条;主要字段 id、url、title、text、budget、budget_currency。
单价 $1.39 / 千次(每次 $0.001389),失败与空结果不扣费。 同步返回;慢任务可在请求体加 "mode": "async",先拿 job_id 再轮询。
请求参数
| 参数名 | 位置 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|---|
Authorization | header | string | 是 | - | Bearer 加你的 API Key。在控制台创建;不要放进网址或代码仓库。 |
platform | body | string | 是 | upwork | 平台标识,固定值。 |
action | body | string | 是 | search | 能力标识,固定值。 |
keyword | body.params | 未声明 | 是 | - | 外包岗位关键词;返回需求方发布的工作机会,不是人才搜索。 |
exclude_keywords | body.params | 未声明 | 否 | - | 排除规则对象,例如 {"keywords":["WordPress"],"matchTitle":true,"matchDescription":true,"matchSkills":true};不是简单字符串或人才黑名单。 |
experience_level | body.params | enum | 否 | - | 岗位经验要求:entry_level 入门、intermediate_level 中级、expert_level 专家。允许值entry_levelexpert_levelintermediate_level |
job_type | body.params | enum | 否 | - | 合同计费类型:hourly 按小时、fixed_price 固定总价;不是全职/兼职。允许值fixed_pricehourly |
since | body.params | 未声明 | 否 | - | 岗位发布日期起点,接受 YYYY-MM-DD 或 ISO-8601;不是雇主注册日期。 |
sort | body.params | enum | 否 | - | 岗位排序:newest 最新、oldest 最早、relevance 相关性;备用路径不支持 oldest,降级时该排序可能不可用。允许值newestoldestrelevance |
until | body.params | 未声明 | 否 | - | 岗位发布日期终点,与 since 配合;不是合同结束日期。 |
limit | body.params | integer (1–100) | 否 | 20 |
代码示例
bash
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
-H "Authorization: Bearer $EVERYINFRA_API_KEY" \
-H 'Content-Type: application/json' \
--data-raw '{
"platform": "upwork",
"action": "search",
"params": {
"keyword": "Python automation"
}
}'[OpenAPI 定义 (JSON)]示例从环境变量 EVERYINFRA_API_KEY 读取 Key,复制出去的代码不含你的 Key。
这里检索项目职位;country 的实际大陆值域与常见国家码不同。
响应示例
真实返回样例
2026年9月26日 16:56(北京时间)用上方代码示例的参数真实调用所得。results 与 count 是那次的真实返回,已隐去名字、账号、头像、主页链接、联系方式等个人信息,列表只保留前 2 条;id、billing、quota 每次调用都不同,只给结构。
json
{
"id": "req_…",
"platform": "upwork",
"action": "search",
"results": [
{
"id": "(已隐去)",
"url": "https://www.upwork.com/jobs/~022103162557197640589",
"title": "Part-Time Automation and Systems Builder",
"text": "# Part-Time Automation & Systems Builder\n\n**The role**\n\nWe’re looking for someone who can turn operational problems into dependable systems our team uses every day. You’ll build automations, internal tools, and reporting workflows that reduce manual work as we grow.\n\nOur technica…",
"budget_currency": "USD",
"hourly_rate_min": 20,
"hourly_rate_max": 30,
"job_type": "HOURLY",
"experience_level": "IntermediateLevel",
"engagement_type": "FULL_TIME",
"duration": "More than 6 months",
"proposals": 173,
"persons_to_hire": 1,
"posted_at": "2026-09-24T16:40:48.454000+00:00",
"tags": [
"Business Process Automation",
"API Integration",
"Google Apps Script"
],
"client_location": "United States",
"client_rating": 4.91,
"client_review_count": 16,
"client_total_spent": 13591.13,
"payment_verified": true,
"platform": "upwork"
},
{
"id": "(已隐去)",
"url": "https://www.upwork.com/jobs/~022103697282534705588",
"title": "Python automation script to batch-generate illustrated storybooks (Claude API + image API)",
"text": "I'm a children's story creator. I need a Python script that runs on its own on my Mac while I'm away.\n\nWhat it should do:\n\nRead a list of story concepts from a file.\nRead one fixed style spec file (format, page count, characters, tone), used in every call.\nCall the Claude API to …",
"budget": 1000,
"budget_currency": "USD",
"hourly_rate_min": 1000,
"hourly_rate_max": 1000,
"job_type": "FIXED",
"experience_level": "IntermediateLevel",
"duration": "1 to 3 months",
"proposals": 45,
"persons_to_hire": 1,
"posted_at": "2026-09-26T07:05:29.443000+00:00",
"tags": [
"Python",
"Automation",
"Scripting"
],
"client_location": "Singapore",
"client_rating": 0,
"client_review_count": 0,
"client_total_spent": 0,
"payment_verified": true,
"platform": "upwork"
}
],
"count": 20,
"billing": { … },
"quota": { … }
}返回字段
业务数据在 results 里;下表是每条记录可能包含的字段,上游没有提供的值不会被补造。
| 字段 | 含义 |
|---|---|
id | 该记录在原平台上的唯一标识。仅在同一平台内唯一,跨平台可能重复。 |
url | 该记录在原平台上的可访问链接。 |
title | 标题。平台无标题概念时(如纯文本帖)为 null。 |
text | 正文内容,已去除 HTML 标签。长文可能被截断。 |
budget本平台特有 | 固定价项目的预算金额。 |
budget_currency本平台特有 | 预算币种。 |
hourly_rate_min本平台特有 | 岗位时薪区间下限。 |
hourly_rate_max本平台特有 | 岗位时薪区间上限。 |
job_type本平台特有 | 计费方式(时薪/固定价)。 |
experience_level本平台特有 | 要求的经验层级(入门/中级/专家)。 |
engagement_type本平台特有 | 投入强度(全职/兼职/按需)。 |
duration本平台特有 | 项目预计持续时长。 |
proposals本平台特有 | 已收到的投标数。数值高说明竞争激烈。 |
persons_to_hire本平台特有 | 计划招募人数。 |
posted_at | 发布时间,ISO 8601 格式、UTC 时区(如 2026-08-07T12:34:56+00:00)。平台只给非标准字符串时原样透传,解析前建议做容错。null 表示平台未公开。 |
tags | 标签数组。无标签时为空数组,不是 null。 |
client_name本平台特有 | 雇主名称。 |
client_location本平台特有 | 雇主所在地。 |
client_rating本平台特有 | 雇主评分,5 分制。 |
client_review_count本平台特有 | 雇主收到的评价数。 |
client_total_spent本平台特有 | 雇主在平台累计花费。判断雇主靠谱程度最硬的一个指标。 |
client_hire_rate本平台特有 | 雇主的发布转录用比例,低说明常发不招。 |
client_avg_hourly_rate本平台特有 | 雇主历史支付的平均时薪。 |
payment_verified本平台特有 | 雇主付款方式是否已验证。未验证的项目回款风险高。 |
platform | 数据来源平台标识,与请求里的 platform 一致(如 xiaohongshu、tiktok)。 |
错误与计费
- 401
- 缺少 Key 或 Key 无效。先鉴权再校验参数,未鉴权的请求拿不到参数结构。
- 422
- 参数名或取值不对。错误信息会列出这项能力支持的参数、允许值和最接近的候选,按它改即可;发生在扣费之前。
- 402
- 余额不足,请先充值。
- 429
- 超过每分钟请求上限,按 Retry-After 等待后再试。
- 503
- 暂时无法完成。已预扣的费用按原账本退回;响应里的 billing 与 refund 写明实际结果,结果未知时会明确标出,不要直接重发。
- 200 空结果
- 请求完成但没有数据,不扣费(billing.reason = empty_result_refunded)。