Skip to content
This repository has been archived by the owner on Mar 6, 2019. It is now read-only.


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time
 ______   ______     ______     __
/\  ___\ /\  ___\   /\  ___\   /\ \___
\ \  __\ \ \  __\   \ \ \____  \ \  __ \
 \ \_\    \ \_____\  \ \_____\  \ \_\ \_\
  \/_/     \/_____/   \/_____/   \/_/\/_/

Fech makes it easy to parse electronic campaign finance filings by candidates, parties and political action committees from the Federal Election Commission. It lets you access filing attributes the same way regardless of filing version, and works as a framework for cleaning and filing data. Fech is an open source project of The New York Times, but contributions from anyone interested in working with F.E.C. filings are greatly appreciated.

Latest version: 1.8. For details see the CHANGELOG.

Fech works best under Ruby version 2.x, and has been tested under Ruby versions 1.8.7, 1.9.2, 1.9.3, 2.1.2, 2.2.2 and Rubinius.


Can be found at Fech’s Github page.


  • August 19, 2015: Version 1.8 released. Replaced ‘sources` directory with submodule pulling from fech-sources.

  • March 28, 2015: Version 1.7 released. Added support for Schedule SA3L and F3Z transactions, fixed some bugs and updated gems and specs.

  • March 11, 2014: Version 1.6.4 released. Bugfix for Schedule E transactions to fix office state and district.

  • Jan. 22, 2014: Version 1.6.3 released. Bugfix to ensure Translator object is available to any Filing object. Thanks to @abstrctn for fix.

  • Jan. 15, 2014: Version 1.6.2 released. Bugfix to add dissemination date to SE mappings.

  • Jan. 15, 2014: Version 1.6.1 released. Bugfix to add FEC version 8.1 mappings for F13 and F24 forms.

  • Jan. 14, 2014: Version 1.6.0 released. Added support for FEC electronic filing version 8.1 headers and mappings.

  • Nov. 14, 2013: Version 1.5.0 released. Bugfix for F3 mapping that did not include col_a_total_receipts_period. Thanks to @capitolmuckrakr for the report.

  • Sep. 10, 2013: Version 1.4.3 released. Bugfix for certain filings that raise encoding errors using Ruby 1.9.3 or greater.

  • Sep. 6, 2013: Version 1.4.2 released. Added support for Ruby 2.0 and fixed improper mapping for F1S records. Thanks to @bycoffe for the report.

  • May 22, 2013: Version 1.4.1 released. Bugfix to add version 6.2 to F5 filing mappings.

  • April 18, 2013: Version 1.4 released. Adds support for unofficial Senate electronic filings.

  • March 26, 2013: Version 1.3.2 released. Bugfix for F99 filing encoding issues. Thanks for the patch, @jgillum.

  • Dec. 11, 2012: Versions 1.3, 1.3.1 released. Adds support for F13 filings from inaugural committees and fixes an encoding bug.

  • Dec. 3, 2012: Version 1.2 released. Fixes encoding errors under Ruby 1.9.3 for ASCII-encoded filings. Thanks to Sanjiv for the bug report.

  • Nov. 13, 2012: Version 1.1 released. CSVDoctor skips rows that don’t match row type being searched for, which provides a performance boost, and smaller bugfixes for Form 99 handling and date-field conversions. Thanks to Sai for several patches.

  • June 16, 2012: Version 1.0.1 released. Bug-fix for older Form 2 support.

  • April 11, 2012: Version 1.0.0 released! Support for Ruby 1.9.3 added, all form types supported.

  • April 9, 2012: Version 1.0.0.rc1 released. Release candidate with backwards-incompatible change (renaming zip attribute to zip_code).

  • March 29, 2012: Version 0.9.10 released. Bug-fix for Form 24 in versions 6.4 and 7.0.

  • March 28, 2012: Version 0.9.9 released. Bug-fix to add support for F3XA form type, support for Schedule H and L.

  • March 23, 2012: Version 0.9.6 and 0.9.5 released. Bug-fixes for F6 mappings.

  • March 10, 2012: Version 0.9.4 released. Added support for F6 filings.

  • March 8, 2012: Version 0.9.3 released. Bug-fix for F2 & F24 mappings.

  • Feb. 29, 2012: Version 0.9.2 released. Bug-fix for F3 mappings, added filing comparison class.

  • Feb. 21, 2012: Versions 0.9.0, 0.9.1 released. Added support for alternative CSV Parsers, F4 filings.

  • Feb. 19, 2012: Version 0.8.2 released. Added layouts for F1M and F2 filings.

  • Feb. 15, 2012: Version 0.8.1 released. Bug-fix to support F3 termination filings.

  • Feb. 13, 2012: Version 0.8.0 released. Layouts for form 3 and form 1 added, for parsing House candidate committee filings.

  • Feb. 11, 2012: Version 0.7.0 released. Layouts for form 9 added, for parsing electioneering communications filings.

  • Jan. 28, 2012: Version 0.6.0 released. Added support for quoted fields.

  • Nov. 22, 2011: Version 0.5.0 released. Layouts for form 3X added, for parsing filings from non-candidate committees.

  • Nov. 13, 2011: Version 0.3.0 released. Layouts for forms 24, 5, 56 and 57 added, for parsing independent expenditure filings.

  • Nov. 4, 2011: Version 0.2.1 released. Bug-fix release to address a problem with the :include option for selecting only certain columns. Thanks to Aaron Bycoffe for the report and patch.


Install Fech as a gem:

gem install fech

For use in a Rails 3 application, put the following in your Gemfile:

gem 'fech'

then issue the ‘bundle install’ command. Fech has been tested under Ruby versions 1.8.7, 1.9.2, 1.9.3, 2.1.2, 2.2.2 and Rubinius.

How to contribute

To develop locally, you’ll need to clone this repository and then run the following commands to update the ‘sources` directory:

“‘ $ git submodule init $ git submodule update “`

Fech’s goal is to provide support for all electronically filed forms and their row types, so contributors can pick an form type that is currently unsupported and try to implement it, or to improve an existing implementation. For entirely new form types, please include specs showing successful parsing of the summary. A good way to start is to look at the mappings for a similar form type. Please note that Fech currently commits to supporting the F.E.C.‘s filing formats back to version 3.0, where applicable.

Bug reports and feature requests are welcomed by submitting an Issue. Please be advised that development is focused on parsing filings, which may contain errors or be improperly filed, and not on providing wrappers or helper methods for working with filings in another context.

To get started, fork the repo, make your additions or changes and send a pull request.

Pronunciation guide

It’s “fetch”, with a soft “ch” sound. There are no other acceptable pronunciations.


Michael Strickland,

Evan Carmi,

Aaron Bycoffe,

Derek Willis,

Daniel Pritchett,


Jack Gillum,

Copyright © 2013 The New York Times Company. See LICENSE for details.