Help us understand the problem. What is going on with this article?

bitly APIの使い方

More than 5 years have passed since last update.

はじめに

bitlyのWeb APIを使ってみたら便利だったのでメモ。
お好みのスクリプトと組み合わせると自動化できて作業効率UPします。

APIドキュメントは↓です。
http://dev.bitly.com/api.html

APIキーの取得

WebAPIを使用するのに必要なoauth2のAPIキーを取得しましょう。

  1. bitlyにログインしてhttps://bitly.com/a/settings/advancedにアクセスします。
  2. [OAuth Applications]の[here]をクリックします。
  3. [Generic Access Token]でパスワードを入力し[Generate Token]をくリックします。
  4. 生成されたAPIキーを控えておきます。(忘れてしまったら作り直し)

なお、https://bitly.com/a/settings/advancedにはLegacy API Keyが表示されていますが、これだと一部のAPIしか使用できません。

APIで短縮URLを作成する

shortenを使って短縮URLを作成します。

https://api-ssl.bitly.com/v3/shorten?access_token=ACCESS_TOKEN&longUrl=短縮したいURL

ACESS_TOKEN短縮したいURLを置き換えてください。
ブラウザに打ち込めばそのまま実行できます。

戻り値
{ "status_code": 200, "status_txt": "OK", "data": { "long_url": "https:\/\/bitly.com\/a\/oauth_apps", "url": "http:\/\/bitly.is\/xxxxxxx", "hash": "xxxxxxx", "global_hash": "xxxxxx", "new_hash": 1 } }

ステータスコードや、生成された短縮URLが返ってきます。

何らかのスクリプトで短縮したいURLを動的にセットして実行すると楽ちんです。
わたしは他にも事情があってJava×SeleniumでWevdriverのgetメソッドを使ってブラウザで実行させています。

APIで細かいアクセスログを取得する

https://bitly.com/a/statsでは30日より前の結果や、過去の日付を指定して時間単位のクリック数を見るといったことができません。
ちょっとした分析や報告にも不便なので、細かいログを取り出して見ました。

link/clicksを使って指定した短縮URLのログを取得します。

https://api-ssl.bitly.com/v3/link/clicks?access_token=ACCESS_TOKEN&unit=day&units=52&unit_reference_ts=1402498800&rollup=false&link=SHORT_URL&timezone=Asia/Tokyo

例によってACCESS_TOKENとSHORT_URLは置き換えてください。
いろいろパラメータを指定していますが、こここでは6/12を起点として過去52日分のログを取得しています。
起点の指定はunit_reference_tsに日付をエポック秒に直した値をセットします。
何日分欲しいかの指定はunitsに日数をセットします。

結果はJSONで返ってきます。※見やすいように整形しています。

戻り値
{"status_code": 200, "data": {
    "units": 52, 
    "unit_reference_ts": 1402498800, 
    "tz_offset": 9, 
    "unit": "day", 
    "link_clicks": [
        {"dt": 1402498800, "clicks": 5}, 
        {"dt": 1402412400, "clicks": 20}, 
        {"dt": 1402326000, "clicks": 4}, 
        {"dt": 1402239600, "clicks": 0}, 
        {"dt": 1402153200, "clicks": 1}, 
        {"dt": 1402066800, "clicks": 0}, 

        ~中略~ ※52日ぶんなので、52個入っている

        {"dt": 1398092400, "clicks": 0}]
    }, 
"status_txt": "OK"}

このままだとなんなので、わたしはGsonで分解してCSV形式で出力したものをエクセルで開いて、ピボットテーブルを使って集計したりグラフを作成したりしています。

パラメーターの紹介です。

  • link - bitlyの短縮url
  • unit - クリック数のカウントを取得する単位。minute, hour, day, week or month, default: day
  • units - 単位当たりの数を指定する。unitがdayでunitsが30なら30日分のクリック数を返す。-1だと全部出すけど、クリックがあった日しか出てこずグラフを作ったりしにくいので注意。
  • timezone - タイムゾーン。
  • rollup - trueまたはfalseを指定。デフォルト(true)だと集計値を返す。* falseだとunit毎の数を返す。
  • limit - 1 to 1000 (default=100).
  • unit_reference_ts - 基準となるタイムスタンプ。デフォルトは現在時間。5月のクリック数が知りたければ、5/31を指定してunitをday、unitsを31にする
dts
コンサルティングから設計、開発、HW/SWの選定、運用、保守までシステムをサポートする総合情報サービス企業です。
http://www.dts.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした