Module: SecApi

Defined in:
lib/sec_api.rb,
lib/sec_api/xbrl.rb,
lib/sec_api/query.rb,
lib/sec_api/types.rb,
lib/sec_api/client.rb,
lib/sec_api/config.rb,
lib/sec_api/stream.rb,
lib/sec_api/mapping.rb,
lib/sec_api/version.rb,
lib/sec_api/extractor.rb,
lib/sec_api/errors/error.rb,
lib/sec_api/objects/fact.rb,
lib/sec_api/deep_freezable.rb,
lib/sec_api/filing_journey.rb,
lib/sec_api/objects/entity.rb,
lib/sec_api/objects/filing.rb,
lib/sec_api/objects/period.rb,
lib/sec_api/callback_helper.rb,
lib/sec_api/rate_limit_state.rb,
lib/sec_api/metrics_collector.rb,
lib/sec_api/objects/data_file.rb,
lib/sec_api/objects/xbrl_data.rb,
lib/sec_api/structured_logger.rb,
lib/sec_api/rate_limit_tracker.rb,
lib/sec_api/collections/filings.rb,
lib/sec_api/errors/server_error.rb,
lib/sec_api/errors/network_error.rb,
lib/sec_api/objects/stream_filing.rb,
lib/sec_api/errors/not_found_error.rb,
lib/sec_api/errors/permanent_error.rb,
lib/sec_api/errors/transient_error.rb,
lib/sec_api/objects/extracted_data.rb,
lib/sec_api/errors/pagination_error.rb,
lib/sec_api/errors/rate_limit_error.rb,
lib/sec_api/errors/validation_error.rb,
lib/sec_api/middleware/rate_limiter.rb,
lib/sec_api/objects/fulltext_result.rb,
lib/sec_api/middleware/error_handler.rb,
lib/sec_api/errors/reconnection_error.rb,
lib/sec_api/errors/configuration_error.rb,
lib/sec_api/middleware/instrumentation.rb,
lib/sec_api/errors/authentication_error.rb,
lib/sec_api/collections/fulltext_results.rb,
lib/sec_api/objects/document_format_file.rb

Overview

SecApi is a Ruby client library for the sec-api.io API.

This gem provides programmatic access to 18+ million SEC EDGAR filings with production-grade error handling, resilience, and observability.

Examples:

Basic usage

client = SecApi::Client.new(api_key: "your_api_key")
filings = client.query.ticker("AAPL").form_type("10-K").search
filings.each { |f| puts "#{f.ticker}: #{f.form_type}" }

Query with date range and full-text search

filings = client.query
  .ticker("AAPL", "TSLA")
  .form_type("10-K", "10-Q")
  .date_range(from: "2020-01-01", to: "2023-12-31")
  .search_text("revenue growth")
  .search

Entity resolution (ticker to CIK)

entity = client.mapping.ticker("AAPL")
puts "CIK: #{entity.cik}, Name: #{entity.name}"

XBRL financial data extraction

filing = client.query.ticker("AAPL").form_type("10-K").search.first
xbrl = client.xbrl.to_json(filing)
revenue = xbrl.statements_of_income["RevenueFromContractWithCustomerExcludingAssessedTax"]

Real-time filing notifications

client.stream.subscribe(tickers: ["AAPL"]) do |filing|
  puts "New filing: #{filing.form_type} at #{filing.filed_at}"
end

See Also:

Defined Under Namespace

Modules: CallbackHelper, Collections, DeepFreezable, FilingJourney, MetricsCollector, Middleware, Objects, StructuredLogger, Types, VERSION Classes: AuthenticationError, Client, Config, ConfigurationError, Error, ExtractedData, Extractor, Fact, Mapping, NetworkError, NotFoundError, PaginationError, Period, PermanentError, Query, RateLimitError, RateLimitState, RateLimitTracker, ReconnectionError, ServerError, Stream, TransientError, ValidationError, Xbrl, XbrlData

Class Method Summary collapse

Class Method Details

.gem_versionGem::Version

Returns the gem version as a Gem::Version object.

Examples:

SecApi.gem_version  # => #<Gem::Version "1.0.0">
SecApi.gem_version >= Gem::Version.new("1.0.0")  # => true

Returns:

  • (Gem::Version)

    the version of the gem



12
13
14
# File 'lib/sec_api/version.rb', line 12

def self.gem_version
  Gem::Version.new(VERSION::STRING)
end