Edgar

A Ruby library for accessing SEC EDGAR filings. Port of the Python edgartools library.

Installation

gem "ruby-edgar", git: "https://github.com/tian-im/edgar"

Or build locally:

gem build ruby-edgar.gemspec
gem install ruby-edgar-0.1.0.gem

Usage

Company Lookup

require "edgar"

# By ticker
aapl = Edgar.Company("AAPL")
aapl.cik  # => 320193

# By CIK
company = Edgar::Company.new(cik: 320193)

Entity Data

data = aapl.data
data.name          # => "Apple Inc."
data.tickers       # => ["AAPL"]
data.exchanges     # => ["Nasdaq"]
data.sic           # => 3571
data.category      # => "Large accelerated filer"
data.business_address  # => Address

Financial Facts

facts = aapl.facts
facts.concept_values("Revenues", limit: 1)
facts.concept_values("NetIncomeLoss", limit: 1)
facts.list_concepts(search: "Revenue", limit: 10)

Search Filings by Quarter

filings = Edgar::Filings.from_quarter(2024, 4)
aapl_filings = filings.filter(cik: 320193)
aapl_filings.latest(5).each { |f| puts "#{f.form} #{f.filing_date}" }

Access a Filing

filing = aapl_filings.first
filing.form            # => "10-K"
filing.filing_date     # => Date
filing.html            # => Primary HTML document
filing.text            # => Full submission text
filing.header.period_of_report  # => "20240928"
filing.header.filer_company     # => "Apple Inc."

Attachments

filing.attachments.each do |a|
  puts "#{a.document} (#{a.document_type})"
end

filing.exhibits   # Exhibit attachments
filing.datafiles  # XML data files

Data Objects

obj = Edgar::DataObjects.for(filing)
# Returns TenK, TenQ, Form4, etc. based on form type
obj.form_type
obj.company_name

XBRL

xbrl = filing.xbrl
xbrl.facts          # Array of fact hashes
xbrl.context_refs   # Reporting contexts
xbrl.financial_concepts  # US-GAAP concepts

Configuration

Set the EDGAR_IDENTITY environment variable:

export EDGAR_IDENTITY="Your Name your.email@example.com"

Development

bundle install
ruby -e 'require "bundler/setup"; require "edgar"'

License

MIT