Python SDK

Python 向け Web 検索 API

公式 Python クライアントは公開 API の全エンドポイントをカバーします。認証、タイムアウト、レート制限時のリトライ、deepcrawl に必要なポーリングを引き受けるため、コードは検索そのものに集中できます。

インストールbash
pip install search1api
export SEARCH1API_API_KEY="your-api-key"
クライアントが引き受けること

認証、タイムアウト、リトライ、deepcrawl のポーリングはすでに書かれているため、コードは検索そのものに集中できます。

1
全エンドポイントを 1 つで

search、news、crawl、screenshot、sitemap、trending、extract、deepcrawl。

2
分岐できるエラー

認証、クレジット、バリデーション、レート制限、サーバー障害に個別の型。

3
必要なら非同期で

AsyncSearch1API が asyncio 向けに同じ操作を提供します。

カバー範囲

search / news / crawl / screenshot / extract / deepcrawl

Python から Web を検索する

Web 検索 API は、解析が必要な HTML ページではなく、プログラムが読める構造化結果(タイトル、リンク、本文)を返します。これは Python でとくに効いてきます。代替手段は検索結果ページのスクレイピングであり、マークアップが変わるたびにパーサーを書き直すことになるからです。Search1API は 1 つのエンドポイントから十数種類のソースに対して JSON を返し、スニペットでは足りない場合は上位結果の本文を同じレスポンスに含められます。

クライアントが引き受けること

全エンドポイントを 1 つのクライアントで

検索、ニュース、クロール、スクリーンショット、サイトマップ、トレンド、抽出、deepcrawl がすべて同じオブジェクトのメソッドで、公開 OpenAPI 契約をカバーします。

分岐できるエラー

認証、クレジット、バリデーション、not found、レート制限、サーバー障害それぞれに専用のエラー型があり、ステータスコードとパース済みボディを保持します。

安全なところだけリトライ

タイムアウトは 30 秒。429 と一時的な 5xx は 2 回までリトライします。認証・支払い・バリデーションのエラーはリトライせず、deepcrawl タスクの開始も自動リトライしません。

必要なら非同期で

AsyncSearch1API が同じ操作を asyncio 向けに提供し、非同期コンテキストマネージャーとして使えます。

バイナリレスポンスもそのまま

スクリーンショットは JSON ではなく画像バイト列を返します。クライアントはコンテンツタイプとリクエスト ID を本体と一緒に保持します。

ポーリングを書かない deepcrawl

1 回の呼び出しでタスクを開始し完了まで待ちます。タスク ID を保存する必要がある場合のために、start・status・wait の各メソッドも用意されています。

クイックスタート

ダッシュボードでキーを作成し、環境変数に設定して検索します。crawl_results を指定すると、上位結果をページ本文ごと同じ呼び出しで受け取れます。

search.pypython
from search1api import Search1API
client = Search1API() # reads SEARCH1API_API_KEY
response = client.search(
"latest AI agent frameworks",
max_results=10,
crawl_results=3,
)
for result in response["results"]:
print(result["title"], result["link"])

手書きのポーリングなしで deepcrawl

サイト全体のクロールは通常、タスクを開始し、ステータスをポーリングし、待機処理を自分で書くことになります。クライアントはそれを 1 回の呼び出しで行い、完成したアーカイブの URL を返します。

deepcrawl.pypython
result = client.deepcrawl("https://example.com", type="all")
print(result["zipUrl"])

カバーするエンドポイント

どの経路でも消費するクレジットは同じです。検索・ニュースが 1 クレジット、取得に成功したページごとに 1 クレジット追加。

作られているもの

内部インデックスと並行してライブ Web の文脈を取り込む RAG パイプライン。

複数ソースを検索し、結果をファイルに書き出すリサーチスクリプト。

あるトピックのニュースを追い、ダイジェストを投稿する定期ジョブ。

スニペットではなく結果ページの本文を読み取るデータ収集。

お使いのフレームワークに合わせてクライアントを包んだエージェントツール。

よくある質問

Python から Web を検索するにはどうしますか?

search1api パッケージをインストールし、環境変数 SEARCH1API_API_KEY を設定して client.search("クエリ") を呼びます。レスポンスは results リストを含む dict で、各要素にタイトル、リンク、本文が入ります。HTML の解析もスクレイピングも不要です。

非同期コードでも使えますか?

使えます。AsyncSearch1API が asyncio 向けに同じ操作を提供し、非同期コンテキストマネージャーとして動作するため、スレッドプールなしで既存のイベントループに組み込めます。

レート制限に当たるとどうなりますか?

429 は自動的に 2 回までリトライされ、一時的な 5xx も同様です。認証・支払い・バリデーションのエラーはリトライしても解決しないため、即座に送出されます。

どの検索エンジンを使えますか?

Google、Bing、DuckDuckGo、Yahoo、GitHub、arXiv、Reddit、X、YouTube、Wikipedia、IMDb、WeChat、Bilibili、Baidu、360、Quark。リクエストの search_service で指定します。

無料枠はありますか?

新規アカウントにはカード不要で 100 クレジット(検索 100 回分)が付きます。検索・ニュースは 1 クレジット、取得に成功したページごとに 1 クレジット追加です。

さらに詳しく

Python から検索を始める

インストールは 2 行、試すための 100 無料クレジット付き、クレジットカード不要。