Alexa Web Information Service

Ruby client for AWIS

Installation

gem install alexa

Usage

All success response objects contain response_id method.

Url Info

client = Alexa::Client.new(access_key_id: "key", secret_access_key: "secret")
url_info = client.url_info(url: "site.com")

Returns object that contains methods:

  • rank
  • data_url
  • site_title
  • site_description
  • language_locale
  • language_encoding
  • links_in_count
  • keywords
  • related_links
  • speed_median_load_time
  • speed_percentile
  • rank_by_country
  • rank_by_city
  • usage_statistics
  • categories

You can specify options:

  • url - address to be measured
  • response_group - which data to include in response (i.e. ["rank", "contact_info"]) - defaults to all available

See: Docs for valid groups.

Sites Linking In

client = Alexa::Client.new(access_key_id: "key", secret_access_key: "secret")
sites_linking_in = client.sites_linking_in(url: "site.com")

Returns object that contains method:

  • sites

You can specify options:

  • url - address to be measured
  • count - how many results to retrieve - defaults to max value that is 20
  • start - offset of results - defaults to 0

Traffic History

client = Alexa::Client.new(access_key_id: "key", secret_access_key: "secret")
traffic_history = client.traffic_history(url: "site.com")

Returns object that contains methods:

  • site
  • range
  • start
  • data

You can specify options:

  • url - address to be measured
  • range - how many days to retrieve - defaults to max value 31
  • start - start date (i.e. "20120120", 4.days.ago) - defaults to range number days ago

Category Browse

client = Alexa::Client.new(access_key_id: "key", secret_access_key: "secret")
category_browse = client.category_browse(path: "Top/Games/Card_Games")

Returns object that contains methods:

  • categories
  • language_categories
  • related_categories
  • letter_bars

You can specify options:

  • path - category to be measured (i.e. "Top/Games/Card_Games") - valid paths can be found on dmoz
  • response_group - any of: categories, related_categories, language_categories, letter_bars - defaults to all
  • descriptions - should response include descriptions (i.e. false) - defaults to true

Category Listings

client = Alexa::Client.new(access_key_id: "key", secret_access_key: "secret")
category_listings = client.category_listings(path: "Top/Games/Card_Games")

Returns object that contains methods:

  • count
  • recursive_count
  • listings

You can specify options:

  • path - category to be measured (i.e. "Top/Games/Card_Games") - valid paths can be found on dmoz
  • sort_by - sort results by one of: popularity, title, average_review - defaults to popularity
  • recursive - should result include subcategories (i.e. false)- defaults to true
  • count - how many results to retrieve - defaults to max value, that is 20
  • start - offset of results - defaults to 0
  • descriptions - should response include descriptions (i.e. false) - defaults to true

Caveats

Status Code

You can retrieve Alexa status code calling status_code method.

It happens (so far in TrafficHistory) that Alexa returns response 200 with AlexaError status.

Parsers

Alexa is using multi_xml to parse XML documents. Tested with:

  • rexml
  • nokogiri
  • libxml

Currently alexa will not work with ox gem

Contributors

Continuous Integration

Build Status

Copyright (c) Wojciech Wnętrzak. See LICENSE for details.