フリーランスや小規模な制作会社を運営していると、条件のよい Upwork 案件は最初の数人の入札者に決まりがちなのに、検索ページは手動で更新し続けるしかありません。サービスを売る側にとっては、同じ案件一覧がクライアントの求めているものや相場を知る材料にもなります。Lovely Router が検索を代行します。キーワードと絞り込み条件を送ると、案件 1 件につき 1 つの JSON オブジェクトが返り、プリペイド残高から案件ごとに課金されます。cron ジョブ、Slack ボット、AI エージェントのどこからでも、1 つの API キーで呼び出せます。
AI エージェントに任せる
このプロンプトを Claude Code、Cursor、Codex などのコーディングエージェントに貼り付けてください。ドキュメントの場所と API キーの使い方をエージェントに伝えます。
他の人が入札する前に、あなたのスキルに合う新着 Upwork 案件を見つける. Use the Lovely Router data tools: each returns JSON and is billed per result.
- Docs (read first): https://lovelyrouter.com/docs/tools/find.md and https://lovelyrouter.com/docs/tools/run.md
- Plan first: POST https://lovelyrouter.com/v1/tools/suggest with `{"task": "<my task in plain words>"}` (free). It returns the tools to run in order, each with an example `input`, the `input_required` fields, an estimated cost and a ready-made `run` request. Replace the example values with my task's; if a field is unclear, read the tool with GET https://lovelyrouter.com/v1/tools/<id>. To browse instead, POST https://lovelyrouter.com/v1/tools/discover searches the catalog.
- Show me the plan and its estimated cost (`total_est_cost_usd`) before running anything large.
- Run: POST https://lovelyrouter.com/v1/tools/<id>/run with `{"input": {...}, "max_results": N}`. A 200 has the finished run with `items`; a 202 means it is still running, so poll the `poll` path until `status` is `succeeded`, `failed`, `timed_out` or `stopped`.
- Only delivered results are billed. Keep max_results small on the first run, check the output, then scale up.
- If you support MCP, connect https://lovelyrouter.com/mcp instead (Streamable HTTP, same key; https://lovelyrouter.com/docs/tools/mcp.md) and use suggest_tools, get_tool and run_tool.
- Auth: read my API key from the LOVELY_API_KEY environment variable and send it as `Authorization: Bearer $LOVELY_API_KEY`. Never print or commit the key. If it is not set, ask me to create one at https://lovelyrouter.com/app/keys.
- Billing is prepaid: every call is charged to my balance, so test with a small request before running anything large.
- Every docs page is plain Markdown; the full index is https://lovelyrouter.com/llms.txt.
My task: <the inputs (links, keywords or accounts) and how many results you need>仕組み
検索条件を決める
提供している仕事に合わせて、
web scrapingやdata entryなどのキーワードを選びます。経験レベル、支払い形態、支払い確認済みかどうかで絞り込み、newestで並べ替えます。上限を付けてツールを実行する
入力を
max_resultsと一緒にPOST /v1/tools/upwork-jobs/runに送ります。実行は最大費用を残高から仮押さえし、案件を JSON で返します。絞り込んで通知する
確認済みの案件 ID を保存しておきます。実行のたびに、予算・スキル・クライアント履歴の条件に合う新着案件だけを自分に送ります。
1 回のリクエストで Upwork の案件を取得する
Upwork 案件を検索するツールは query を受け取ります。結果の上限は perPage で指定します。下の例では 10 件を依頼しています。
curl https://lovelyrouter.com/v1/tools/upwork-jobs/run \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-H "content-type: application/json" \
-d '{
"input": {
"query": "web scraping",
"perPage": 10
},
"max_results": 10
}'案件は検索結果に表示される形で返り、sort を newest(デフォルト)にすると新しい順になります。60 秒を過ぎても実行中の場合は 202 が返ります。ポーリングの方法はツールを実行するをご覧ください。
各案件に含まれる情報
| フィールドのグループ | 取得できる内容 |
|---|---|
| 案件 | タイトルとクライアントの依頼内容 |
| 報酬 | 予算または単価 |
| スキル | クライアントが付けたスキルタグ |
| クライアント | クライアントの履歴 |
| タイミング | 案件が投稿された時刻 |
検索は experienceLevel、jobType(支払い形態)、paymentVerified で絞り込めます。同じパイプラインでモデルに、各案件をあなたのプロフィールに照らして採点させることもできます。
レシピ
キーワードを 30 分ごとに、sort を newest にして実行します。保存済みの案件 ID と結果を照合し、新しい案件だけをチャンネルに投稿します。
paymentVerified を true にし、そのうえでクライアントの履歴が実績十分に見える案件だけを残します。
提供している仕事の案件を 50 件取得し、予算と単価を読んで、中央値あたりを基準に自分の単価を設定します。
1 週間分の案件でスキルタグを集計すれば、次に学ぶべきことや打ち出すべきことが見えてきます。
新着案件ごとにポートフォリオと一緒にモデルへ送り、最初の下書きを書かせます。送信前に自分で手直ししてください。
普段の言葉で頼みたい場合は、MCP サーバーを接続して Claude Code や Cursor に次のように伝えます。「支払い確認済みの web scraping の最新 Upwork 案件を 30 件取得し、予算の記載がないものを除外して、タイトル、予算、スキル、クライアント履歴を一覧にしてください。max_results は 30 に設定してください。」
他の求人ソースと組み合わせる
Upwork がカバーするのはフリーランスの仕事です。正社員の求人や企業の採用ページを見れば、同じスキルで他に誰が採用しているかがわかります。
Upwork のフリーランス案件:タイトル、予算・時給、スキル、クライアント履歴、掲載時刻。
LinkedIn 求人検索 URL の求人:職種、会社、勤務地、掲載日、説明。
職種と勤務地で Indeed の求人を取得:会社、給与、掲載日、説明。
キーワードと勤務地で Glassdoor の求人を取得。
企業の採用サイトや ATS(Greenhouse、Lever、Workday など)から直接取得した最新求人。職種・地域・会社で検索可能。
linkedin-jobsは、同じスキルの LinkedIn の求人を検索します。indeed-jobsは Indeed の求人を加えます。契約社員や正社員の需要を見るのに役立ちます。glassdoor-jobsは Glassdoor の求人を加えます。career-site-jobsは、企業の採用サイトから求人を読み取ります。
採用する側での求人データの活用については、採用データをご覧ください。
料金
料金は案件単位です。実行を開始すると最大費用(呼び出し料金 + 案件単価 × max_results)が仮押さえされ、実際に返った分で精算されて、仮押さえの残りは残高に戻ります。失敗またはタイムアウトした実行は返した案件の分だけを支払い、開始時に拒否された実行は無料です。
1 時間ごとに 50 件を確認すると、1 回の実行あたり 50 件分として課金されます。そのため、絞り込んだ検索と低めの max_results で費用を小さく抑えられます。サブスクリプションや月額の最低利用料はなく、$5 からチャージでき、1 つの残高でツールとモデルの両方を支払えます。現在の価格は上のカードに表示されており、料金ではすべてのツールを一覧できます。
よくある質問
Upwork をキーワードで検索できますか?+
はい。query フィールドにキーワードを指定し、sort は newest または relevance を選べます。
どんな絞り込みに対応していますか?+
経験レベル、案件タイプ(支払い形態)、支払い確認済みかどうかです。それ以外の条件は、実行後に自前のコードで絞り込んでください。
1 回の実行で何件の案件を取得できますか?+
perPage で指定し、最大 50 件です。デフォルトは 20 件で、指定する場合は最低 10 件が返ります。
案件への応募や提案の送信も代行してくれますか?+
いいえ。求人情報を読み取って JSON で返すだけです。提案文の作成と送信はご自身で行ってください。
サブスクリプションは必要ですか?+
いいえ。プリペイド残高にクレジットを追加し、実行ごとに残高から差し引かれます。失敗した実行は返した結果の分だけを支払い、自動で更新されるものは何もありません。