Class: Seo::AhrefsApiClient
- Inherits:
-
Object
- Object
- Seo::AhrefsApiClient
- Defined in:
- app/services/seo/ahrefs_api_client.rb
Overview
Client for Ahrefs API v3 using direct REST endpoints.
Fetches SEO metrics including traffic estimates, keywords, and positions.
Defined Under Namespace
Classes: Response
Constant Summary collapse
- BASE_URL =
'https://api.ahrefs.com/v3'
Instance Method Summary collapse
-
#initialize(api_key: nil) ⇒ AhrefsApiClient
constructor
A new instance of AhrefsApiClient.
-
#limits_and_usage ⇒ Response
Check API limits and usage.
-
#organic_keywords(target:, limit: 50) ⇒ Response
Get organic keywords for a specific URL.
-
#overview(target:, mode: 'subdomains') ⇒ Response
Get overview metrics for a target.
-
#top_pages(target:, mode: 'subdomains', limit: 100, offset: 0) ⇒ Response
Get top pages by estimated organic traffic.
Constructor Details
#initialize(api_key: nil) ⇒ AhrefsApiClient
Returns a new instance of AhrefsApiClient.
28 29 30 31 32 33 |
# File 'app/services/seo/ahrefs_api_client.rb', line 28 def initialize(api_key: nil) @api_key = api_key || Heatwave::Configuration.fetch(:ahrefs, :api_key) raise 'Ahrefs API key not configured in credentials' if @api_key.blank? @connection = build_connection end |
Instance Method Details
#limits_and_usage ⇒ Response
Check API limits and usage
83 84 85 |
# File 'app/services/seo/ahrefs_api_client.rb', line 83 def limits_and_usage request(:get, 'subscription-info/limits-and-usage', {}) end |
#organic_keywords(target:, limit: 50) ⇒ Response
Get organic keywords for a specific URL
57 58 59 60 61 62 63 64 65 66 |
# File 'app/services/seo/ahrefs_api_client.rb', line 57 def organic_keywords(target:, limit: 50) params = { target: target, mode: 'exact', select: %w[keyword position sum_traffic volume traffic_share].join(','), limit: [limit, 1000].min } request(:get, 'site-explorer/organic-keywords', params) end |
#overview(target:, mode: 'subdomains') ⇒ Response
Get overview metrics for a target
72 73 74 75 76 77 78 79 |
# File 'app/services/seo/ahrefs_api_client.rb', line 72 def overview(target:, mode: 'subdomains') params = { target: target, mode: mode } request(:get, 'site-explorer/overview', params) end |
#top_pages(target:, mode: 'subdomains', limit: 100, offset: 0) ⇒ Response
Get top pages by estimated organic traffic
41 42 43 44 45 46 47 48 49 50 51 |
# File 'app/services/seo/ahrefs_api_client.rb', line 41 def top_pages(target:, mode: 'subdomains', limit: 100, offset: 0) params = { target: target, mode: mode, select: %w[url sum_traffic keywords top_keyword top_keyword_best_position value].join(','), limit: [limit, 1000].min, offset: offset } request(:get, 'site-explorer/top-pages', params) end |