Data + Charts API

Overview

The Data + Charts API offers an alternative way to access the data, in addition to the SQL Interface and e.ventures Cohort Analysis Google Sheet. The Data + Charts endpoints return candidate, committee and contribution information as well as our enriched data or derived analytical data (cumulative donors).

Knowledge of SQL is not necessary. Like the queries encoded into URLs for the SQL Interface, the Data + Charts API is automatically updated and cached for subsequent requests.

The Data + Charts API offers 5 endpoints to get data about:

We will expand our API with the most popular and most frequently used SQL queries as additional endpoints. We welcome requests and ideas for new endpoints.

2958

Data + Charts API

Pre-requisites

The API specification with a description of the parameters is available at our interactive Data + Charts API Swagger page.

To test the API on this page, please ensure that you:

  1. Authenticate your API key by completing steps 1 to 5.
  2. Have the <API_KEY> provided by a e.ventures team member.

Documentation and User Instructions

Description

Gives the documentation and user instructions for the API.

Endpoint

GET /about
curl -X GET "https://data.eventures.vc/data-charts/v1/about?token=<API_KEY>" -H "accept: text/html"
https://data.eventures.vc/data-charts/v1/about?token=<API_KEY>

📘

Note: In this documentation, please replace <API_KEY> with your API key provided by an e.ventures team member.

Parameters

No parameters.

Response

Status: 200 OK

<!doctype html>
<html>
<head>
<meta charset='UTF-8'><meta name='viewport' content='width=device-width initial-scale=1'>
<title>about</title><link href='https://fonts.loli.net/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext' rel='stylesheet' type='text/css' /><style type='text/css'>html {overflow-x: initial !important;}:root { --bg-color: #ffffff; --text-color: #333333; --select-text-bg-color: #B5D6FC; --select-text-font-color: auto; --monospace: "Lucida Console",Consolas,"Courier",monospace; }
html { font-size: 14px; background-color: var(--bg-color); color: var(--text-color); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; }
body { margin: 0px; padding: 0px; height: auto; bottom: 0px; top: 0px; left: 0px; right: 0px; font-size: 1rem; line-height: 1.42857143; overflow-x: hidden; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: inherit; tab-size: 4; background-position: inherit inherit; background-repeat: inherit inherit; }
iframe { margin: auto; }
a.url { word-break: break-all; }
a:active, a:hover { outline: 0px; }about.html
.in-text-selection, ::selection { text-shadow: none; background: var(--select-text-bg-color); color: var(--select-text-font-color); }
#write { margin: 0px auto; height: auto; width: inherit; word-break: normal; word-wrap: break-word; position: relative; white-space: normal; overflow-x: visible; padding-top: 40px; }
#write.first-line-indent p { text-indent: 2em; }
#write.first-line-indent li p, #write.first-line-indent p * { text-indent: 0px; }
#write.first-line-indent li { margin-left: 2em; }
.for-image #write { padding-left: 8px; padding-right: 8px; }
body.typora-export { padding-left: 30px; padding-right: 30px; }
.typora-export .footnote-line, .typora-export li, .typora-export p { white-space: pre-wrap; }
@media screen and (max-width: 500px) { 
  body.typora-export { padding-left: 0px; padding-right: 0px; }
  #write { padding-left: 20px; padding-right: 20px; }
  .CodeMirror-sizer { margin-left: 0px !important; }
  .CodeMirror-gutters { display: none !important; }
}
#write li > figure:last-child { margin-bottom: 0.5rem; }
#write ol, #write ul { position: relative; }
img { max-width: 100%; vertical-align: middle; }
button, input, select, textarea { color: inherit; font-family: inherit; font-size: inherit; font-style: inherit; font-variant-caps: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; }
input[type="checkbox"], input[type="radio"] { line-height: normal; padding: 0px; }
*, ::after, ::before { box-sizing: border-box; }
#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p, #write pre { width: inherit; }
#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p { position: relative; }
p { line-height: inherit; }
h1, h2, h3, h4, h5, h6 { break-after: avoid-page; break-inside: avoid; orphans: 2; }
p { orphans: 4; }
h1 { font-size: 2rem; }
h2 { font-size: 1.8rem; }
h3 { font-size: 1.6rem; }
h4 { font-size: 1.4rem; }
h5 { font-size: 1.2rem; }
h6 { font-size: 1rem; }
.md-math-block, .md-rawblock, h1, h2, h3, h4, h5, h6, p { margin-top: 1rem; margin-bottom: 1rem; }
.hidden { display: none; }
.md-blockmeta { color: rgb(204, 204, 204); font-weight: 700; font-style: italic; }
a { cursor: pointer; }
sup.md-footnote { padding: 2px 4px; background-color: rgba(238, 238, 238, 0.701961); color: rgb(85, 85, 85); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; cursor: pointer; }
sup.md-footnote a, sup.md-footnote a:hover { color: inherit; text-transform: inherit; text-decoration: inherit; }
#write input[type="checkbox"] { cursor: pointer; width: inherit; height: inherit; }
figure { overflow-x: auto; margin: 1.2em 0px; max-width: calc(100% + 16px); padding: 0px; }
figure > table { margin: 0px !important; }
tr { break-inside: avoid; break-after: auto; }
thead { display: table-header-group; }
table { border-collapse: collapse; border-spacing: 0px; width: 100%; overflow: auto; break-inside: auto; text-align: left; }
table.md-table td { min-width: 32px; }
.CodeMirror-gutters { border-right-width: 0px; background-color: inherit; }
.CodeMirror-linenumber { }
.CodeMirror { text-align: left; }
.CodeMirror-placeholder { opacity: 0.3; }
.CodeMirror pre { padding: 0px 4px; }
.CodeMirror-lines { padding: 0px; }
div.hr:focus { cursor: none; }
#write pre { white-space: pre-wrap; }
#write.fences-no-line-wrapping pre { white-space: pre; }
#write pre.ty-contain-cm { white-space: normal; }
.CodeMirror-gutters { margin-right: 4px; }
.md-fences { font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; overflow: visible; white-space: pre; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: inherit; position: relative !important; background-position: inherit inherit; background-repeat: inherit inherit; }
.md-diagram-panel { width: 100%; margin-top: 10px; text-align: center; padding-top: 0px; padding-bottom: 8px; overflow-x: auto; }
#write .md-fences.mock-cm { white-space: pre-wrap; }
.md-fences.md-fences-with-lineno { padding-left: 0px; }
#write.fences-no-line-wrapping .md-fences.mock-cm { white-space: pre; overflow-x: auto; }
.md-fences.mock-cm.md-fences-with-lineno { padding-left: 8px; }
.CodeMirror-line, twitterwidget { break-inside: avoid; }
.footnotes { opacity: 0.8; font-size: 0.9rem; margin-top: 1em; margin-bottom: 1em; }
.footnotes + .footnotes { margin-top: 0px; }
.md-reset { margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: top; text-decoration: none; text-shadow: none; float: none; position: static; width: auto; height: auto; white-space: nowrap; cursor: inherit; line-height: normal; font-weight: 400; text-align: left; box-sizing: content-box; direction: ltr; background-position: 0px 0px; background-repeat: initial initial; }
li div { padding-top: 0px; }
blockquote { margin: 1rem 0px; }
li .mathjax-block, li p { margin: 0.5rem 0px; }
li { margin: 0px; position: relative; }
blockquote > :last-child { margin-bottom: 0px; }
blockquote > :first-child, li > :first-child { margin-top: 0px; }
.footnotes-area { color: rgb(136, 136, 136); margin-top: 0.714rem; padding-bottom: 0.143rem; white-space: normal; }
#write .footnote-line { white-space: pre-wrap; }
@media print { 
  body, html { border: 1px solid transparent; height: 99%; break-after: avoid-page; break-before: avoid-page; }
  #write { margin-top: 0px; padding-top: 0px; border-color: transparent !important; }
  .typora-export * { -webkit-print-color-adjust: exact; }
  html.blink-to-pdf { font-size: 13px; }
  .typora-export #write { padding-left: 32px; padding-right: 32px; padding-bottom: 0px; break-after: avoid-page; }
  .typora-export #write::after { height: 0px; }
}
.footnote-line { margin-top: 0.714em; font-size: 0.7em; }
a img, img a { cursor: pointer; }
pre.md-meta-block { font-size: 0.8rem; min-height: 0.8rem; white-space: pre-wrap; background-color: rgb(204, 204, 204); display: block; overflow-x: hidden; background-position: initial initial; background-repeat: initial initial; }
p > .md-image:only-child:not(.md-img-error) img, p > img:only-child { display: block; margin: auto; }
p > .md-image:only-child { display: inline-block; width: 100%; }
#write .MathJax_Display { margin: 0.8em 0px 0px; }
.md-math-block { width: 100%; }
.md-math-block:not(:empty)::after { display: none; }
[contenteditable="true"]:active, [contenteditable="true"]:focus, [contenteditable="false"]:active, [contenteditable="false"]:focus { outline: 0px; box-shadow: none; }
.md-task-list-item { position: relative; list-style-type: none; }
.task-list-item.md-task-list-item { padding-left: 0px; }
.md-task-list-item > input { position: absolute; top: 0px; left: 0px; margin-left: -1.2em; margin-top: calc(1em - 10px); border: none; }
.math { font-size: 1rem; }
.md-toc { min-height: 3.58rem; position: relative; font-size: 0.9rem; border-top-left-radius: 10px; border-top-right-radius: 10px; border-bottom-right-radius: 10px; border-bottom-left-radius: 10px; }
.md-toc-content { position: relative; margin-left: 0px; }
.md-toc-content::after, .md-toc::after { display: none; }
.md-toc-item { display: block; color: rgb(65, 131, 196); }
.md-toc-item a { text-decoration: none; }
.md-toc-inner:hover { text-decoration: underline; }
.md-toc-inner { display: inline-block; cursor: pointer; }
.md-toc-h1 .md-toc-inner { margin-left: 0px; font-weight: 700; }
.md-toc-h2 .md-toc-inner { margin-left: 2em; }
.md-toc-h3 .md-toc-inner { margin-left: 4em; }
.md-toc-h4 .md-toc-inner { margin-left: 6em; }
.md-toc-h5 .md-toc-inner { margin-left: 8em; }
.md-toc-h6 .md-toc-inner { margin-left: 10em; }
@media screen and (max-width: 48em) { 
  .md-toc-h3 .md-toc-inner { margin-left: 3.5em; }
  .md-toc-h4 .md-toc-inner { margin-left: 5em; }
  .md-toc-h5 .md-toc-inner { margin-left: 6.5em; }
  .md-toc-h6 .md-toc-inner { margin-left: 8em; }
}
a.md-toc-inner { font-size: inherit; font-style: inherit; font-weight: inherit; line-height: inherit; }
.footnote-line a:not(.reversefootnote) { color: inherit; }
.md-attr { display: none; }
.md-fn-count::after { content: "."; }
code, pre, samp, tt { font-family: var(--monospace); }
kbd { margin: 0px 0.1em; padding: 0.1em 0.6em; font-size: 0.8em; color: rgb(36, 39, 41); background-color: rgb(255, 255, 255); border: 1px solid rgb(173, 179, 185); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap; vertical-align: middle; background-position: initial initial; background-repeat: initial initial; }
.md-comment { color: rgb(162, 127, 3); opacity: 0.8; font-family: var(--monospace); }
code { text-align: left; }
a.md-print-anchor { white-space: pre !important; border: none !important; display: inline-block !important; position: absolute !important; width: 1px !important; right: 0px !important; outline: 0px !important; text-shadow: initial !important; background-position: 0px 0px !important; background-repeat: initial initial !important; }
.md-inline-math .MathJax_SVG .noError { display: none !important; }
.html-for-mac .inline-math-svg .MathJax_SVG { vertical-align: 0.2px; }
.md-math-block .MathJax_SVG_Display { text-align: center; margin: 0px; position: relative; text-indent: 0px; max-width: none; max-height: none; min-height: 0px; min-width: 100%; width: auto; overflow-y: hidden; display: block !important; }
.MathJax_SVG_Display, .md-inline-math .MathJax_SVG_Display { width: auto; margin: inherit; display: inline-block !important; }
.MathJax_SVG .MJX-monospace { font-family: var(--monospace); }
.MathJax_SVG .MJX-sans-serif { font-family: sans-serif; }
.MathJax_SVG { display: inline; font-style: normal; font-weight: 400; line-height: normal; zoom: 90%; text-indent: 0px; text-align: left; text-transform: none; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; }
.MathJax_SVG * { transition: none; }
.MathJax_SVG_Display svg { vertical-align: middle !important; margin-bottom: 0px !important; margin-top: 0px !important; }
.os-windows.monocolor-emoji .md-emoji { font-family: "Segoe UI Symbol", sans-serif; }
.md-diagram-panel > svg { max-width: 100%; }
[lang="flow"] svg, [lang="mermaid"] svg { max-width: 100%; height: auto; }
[lang="mermaid"] .node text { font-size: 1rem; }
table tr th { border-bottom-width: 0px; }
video { max-width: 100%; display: block; margin: 0px auto; }
iframe { max-width: 100%; width: 100%; border: none; }
.highlight td, .highlight tr { border: 0px; }
svg[id^="mermaidChart"] { line-height: 1em; }
mark { background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial; }
.md-html-inline .md-plain, .md-html-inline strong, mark .md-inline-math, mark strong { color: inherit; }
mark .md-meta { color: rgb(0, 0, 0); opacity: 0.3 !important; }


:root {
    --side-bar-bg-color: #fafafa;
    --control-text-color: #777;
}

@include-when-export url(https://fonts.loli.net/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext);

html {
    font-size: 16px;
}

body {
    font-family: "Open Sans","Clear Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
    color: rgb(51, 51, 51);
    line-height: 1.6;
}

#write {
    max-width: 860px;
  	margin: 0 auto;
  	padding: 30px;
    padding-bottom: 100px;
}
#write > ul:first-child,
#write > ol:first-child{
    margin-top: 30px;
}

a {
    color: #4183C4;
}
h1,
h2,
h3,
h4,
h5,
h6 {
    position: relative;
    margin-top: 1rem;
    margin-bottom: 1rem;
    font-weight: bold;
    line-height: 1.4;
    cursor: text;
}
h1:hover a.anchor,
h2:hover a.anchor,
h3:hover a.anchor,
h4:hover a.anchor,
h5:hover a.anchor,
h6:hover a.anchor {
    text-decoration: none;
}
h1 tt,
h1 code {
    font-size: inherit;
}
h2 tt,
h2 code {
    font-size: inherit;
}
h3 tt,
h3 code {
    font-size: inherit;
}
h4 tt,
h4 code {
    font-size: inherit;
}
h5 tt,
h5 code {
    font-size: inherit;
}
h6 tt,
h6 code {
    font-size: inherit;
}
h1 {
    padding-bottom: .3em;
    font-size: 2.25em;
    line-height: 1.2;
    border-bottom: 1px solid #eee;
}
h2 {
   padding-bottom: .3em;
    font-size: 1.75em;
    line-height: 1.225;
    border-bottom: 1px solid #eee;
}
h3 {
    font-size: 1.5em;
    line-height: 1.43;
}
h4 {
    font-size: 1.25em;
}
h5 {
    font-size: 1em;
}
h6 {
   font-size: 1em;
    color: #777;
}
p,
blockquote,
ul,
ol,
dl,
table{
    margin: 0.8em 0;
}
li>ol,
li>ul {
    margin: 0 0;
}
hr {
    height: 2px;
    padding: 0;
    margin: 16px 0;
    background-color: #e7e7e7;
    border: 0 none;
    overflow: hidden;
    box-sizing: content-box;
}

li p.first {
    display: inline-block;
}
ul,
ol {
    padding-left: 30px;
}
ul:first-child,
ol:first-child {
    margin-top: 0;
}
ul:last-child,
ol:last-child {
    margin-bottom: 0;
}
blockquote {
    border-left: 4px solid #dfe2e5;
    padding: 0 15px;
    color: #777777;
}
blockquote blockquote {
    padding-right: 0;
}
table {
    padding: 0;
    word-break: initial;
}
table tr {
    border-top: 1px solid #dfe2e5;
    margin: 0;
    padding: 0;
}
table tr:nth-child(2n),
thead {
    background-color: #f8f8f8;
}
table tr th {
    font-weight: bold;
    border: 1px solid #dfe2e5;
    border-bottom: 0;
    margin: 0;
    padding: 6px 13px;
}
table tr td {
    border: 1px solid #dfe2e5;
    margin: 0;
    padding: 6px 13px;
}
table tr th:first-child,
table tr td:first-child {
    margin-top: 0;
}
table tr th:last-child,
table tr td:last-child {
    margin-bottom: 0;
}

.CodeMirror-lines {
    padding-left: 4px;
}

.code-tooltip {
    box-shadow: 0 1px 1px 0 rgba(0,28,36,.3);
    border-top: 1px solid #eef2f2;
}

.md-fences,
code,
tt {
    border: 1px solid #e7eaed;
    background-color: #f8f8f8;
    border-radius: 3px;
    padding: 0;
    padding: 2px 4px 0px 4px;
    font-size: 0.9em;
}

code {
    background-color: #f3f4f4;
    padding: 0 2px 0 2px;
}

.md-fences {
    margin-bottom: 15px;
    margin-top: 15px;
    padding-top: 8px;
    padding-bottom: 6px;
}


.md-task-list-item > input {
  margin-left: -1.3em;
}

@media print {
    html {
        font-size: 13px;
    }
    table,
    pre {
        page-break-inside: avoid;
    }
    pre {
        word-wrap: break-word;
    }
}

.md-fences {
	background-color: #f8f8f8;
}
#write pre.md-meta-block {
	padding: 1rem;
    font-size: 85%;
    line-height: 1.45;
    background-color: #f7f7f7;
    border: 0;
    border-radius: 3px;
    color: #777777;
    margin-top: 0 !important;
}

.mathjax-block>.code-tooltip {
	bottom: .375rem;
}

.md-mathjax-midline {
    background: #fafafa;
}

#write>h3.md-focus:before{
	left: -1.5625rem;
	top: .375rem;
}
#write>h4.md-focus:before{
	left: -1.5625rem;
	top: .285714286rem;
}
#write>h5.md-focus:before{
	left: -1.5625rem;
	top: .285714286rem;
}
#write>h6.md-focus:before{
	left: -1.5625rem;
	top: .285714286rem;
}
.md-image>.md-meta {
    /*border: 1px solid #ddd;*/
    border-radius: 3px;
    padding: 2px 0px 0px 4px;
    font-size: 0.9em;
    color: inherit;
}

.md-tag {
    color: #a7a7a7;
    opacity: 1;
}

.md-toc { 
    margin-top:20px;
    padding-bottom:20px;
}

.sidebar-tabs {
    border-bottom: none;
}

#typora-quick-open {
    border: 1px solid #ddd;
    background-color: #f8f8f8;
}

#typora-quick-open-item {
    background-color: #FAFAFA;
    border-color: #FEFEFE #e5e5e5 #e5e5e5 #eee;
    border-style: solid;
    border-width: 1px;
}

/** focus mode */
.on-focus-mode blockquote {
    border-left-color: rgba(85, 85, 85, 0.12);
}

header, .context-menu, .megamenu-content, footer{
    font-family: "Segoe UI", "Arial", sans-serif;
}

.file-node-content:hover .file-node-icon,
.file-node-content:hover .file-node-open-state{
    visibility: visible;
}

.mac-seamless-mode #typora-sidebar {
    background-color: #fafafa;
    background-color: var(--side-bar-bg-color);
}

.md-lang {
    color: #b4654d;
}

.html-for-mac .context-menu {
    --item-hover-bg-color: #E6F0FE;
}

#md-notification .btn {
    border: 0;
}

.dropdown-menu .divider {
    border-color: #e5e5e5;
}

.ty-preferences .window-content {
    background-color: #fafafa;
}

.ty-preferences .nav-group-item.active {
    color: white;
    background: #999;
}


</style>
</head>
<body class='typora-export' >
<div  id='write'  class = 'is-mac'><h1><a name="data--charts-api" class="md-header-anchor"></a><span>Data + Charts API</span></h1><p><span>An example for a ObservableHQ notebook shows </span><a href='https://observablehq.com/d/613089e8f0f75671' target='_blank' class='url'>https://observablehq.com/d/613089e8f0f75671</a></p><div id="observablehq-7fc781b0"></div>
<script type="module">
import {Runtime, Inspector} from "https://cdn.jsdelivr.net/npm/@observablehq/runtime@4/dist/runtime.js";
import define from "https://api.observablehq.com/d/613089e8f0f75671.js?v=3";
const inspect = Inspector.into("#observablehq-7fc781b0");
(new Runtime).module(define, name => name === "donorChart" ? inspect() : undefined);
</script><p>&nbsp;</p><h2><a name="notes" class="md-header-anchor"></a><span>Notes:</span></h2><ul><li><span>Only Presidential for now</span></li><li><span>ALSO less 200 contributions in here, so all disclosed</span></li><li><span>Other than in Bulk data</span></li></ul><p>&nbsp;</p></div>
</body>
</html>

Donor Analytics

Age distribution of donors for one or more committees

Description

Returns the age distribution of donors for one or more committees.

Endpoint

GET /age_distribution/committee
curl -X GET "https://data.eventures.vc/data-charts/v1/age_distribution/committee?committee_id=C00703975&cycle=2020&token=<API_KEY>" -H "accept: text/csv"
https://data.eventures.vc/data-charts/v1/age_distribution/committee?committee_id=C00703975&cycle=2020&token=<API_KEY>

Parameters

NameTypeDescription
committee_idarray[string]The committee_id for the candidate. You can get this value by running the GET /committee/candidate/search API, and getting the CMTE_ID value.

You can also enter multiple committee ids. For example, to query for the committee ids C00703975 (BIDEN FOR PRESIDENT) and C00659938 (FRIENDS OF ANDREW YANG), run curl -X GET "https://data.eventures.vc/data-charts/v1/age_distribution/committee?committee_id=C00703975&committee_id=C00659938&cycle=2020&token=<API_KEY>" -H "accept: text/csv".
cyclearray[integer]The election cycle(s) for the candidate. The cycle year is entered in the format yyyy. For example, 2020.

An election cycle is a 2 year period, for example, the 2020 election cycle is from January 2019 - December 2020.

You can also enter multiple cycles. For example, to query for the election cycle years 2020 and 2019, run curl -X GET "https://data.eventures.vc/data-charts/v1/age_distribution/committee?committee_id=C00703975&cycle=2020&cycle=2019&token=<API_KEY>" -H "accept: text/csv".

You can also run multiple committee ids for multiple cycles as parameters. For example, curl -X GET "https://data.eventures.vc/data-charts/v1/age_distribution/committee?committee_id=C00703975&committee_id=C00659938&cycle=2020&cycle=2019&token=<API_KEY>" -H "accept: text/csv".

Response

Status: 200 OK
Response body: A downloadable CSV file.

access-control-allow-origin: * 
 content-disposition: attachment; filename="results.csv" 
 content-length: 2253 
 content-type: text/csv; charset=utf-8 
 date: Fri, 31 Jul 2020 12:28:09 GMT 
 server: Google Frontend 
 status: 200 
 x-cloud-trace-context: f11e6595dd10d720965a2969441bd258;o=1

Number of cumulative donors over time for candidate(s) in the election cycle(s)

Description

Returns the number of cumulative donors over time for one or more candidates for the given candidate id(s) and election cycle(s).

Endpoint

GET /cumulative_donors/candidate
curl -X GET "https://data.eventures.vc/data-charts/v1/cumulative_donors/candidate?candidate_id=P80000722&cycle=2020&token=<API_KEY>" -H "accept: text/csv"
https://data.eventures.vc/data-charts/v1/cumulative_donors/candidate?candidate_id=P80000722&cycle=2020&token=<API_KEY>

Parameters

NameTypeDescription
candidate_idarray[string]The candidate_id for the candidate. You can get this value by running the xxx API, and getting the CAND_ID value.

You can also enter multiple candidate ids. For example, to query for the candidate ids P80000722 (BIDEN, JOSEPH R JR) and P00006486 (YANG, ANDREW MR.), run curl -X GET "https://data.eventures.vc/data-charts/v1/cumulative_donors/candidate?candidate_id=P80000722&candidate_id=P00006486&cycle=2020&token=<API_KEY>" -H "accept: text/csv".
cycle array[integer]The election cycle(s) for the candidate. The cycle year is entered in the format yyyy. For example, 2020.

An election cycle is a 2 year period, for example, the 2020 election cycle is from January 2019 - December 2020.

You can also enter multiple cycles. For example, to query for the election cycle years 2020 and 2019, run curl -X GET "https://data.eventures.vc/data-charts/v1/cumulative_donors/candidate?candidate_id=P80000722&cycle=2020&cycle=2019&token=<API_KEY>" -H "accept: text/csv".

You can also run multiple candidate ids for multiple cycles as parameters. For example, curl -X GET "https://data.eventures.vc/data-charts/v1/cumulative_donors/candidate?candidate_id=P80000722&candidate_id=P00006486&cycle=2020&cycle=2019&token=7wwBRAgtqqMui73WbpGgpf0TvQFm38W7379442" -H "accept: text/csv".

Response

Status: 200 OK
Response body: A downloadable CSV file.

access-control-allow-origin: * 
 content-disposition: attachment; filename="results.csv" 
 content-length: 33397 
 content-type: text/csv; charset=utf-8 
 date: Fri, 31 Jul 2020 12:58:46 GMT 
 server: Google Frontend 
 status: 200 
 x-cloud-trace-context: fcb43fa1343226bfdb0b9e34faa2a814;o=1

Candidate Information

Candidate information

Description

Returns candidate information based on the given candidate name(s) and election cycle year(s).

Endpoint

GET /candidate/search
curl -X GET "https://data.eventures.vc/data-charts/v1/candidate/search?name_part=Biden&cycle=2020&token=<API_KEY>" -H "accept: text/csv"
https://data.eventures.vc/data-charts/v1/candidate/search?name_part=Biden&cycle=2020&token=<API_KEY>

Parameters

NameTypeDescription
name_partarray[string]The name(s) of candidate(s).

You can also enter multiple candidate names. For example, to query for the candidates biden and yang, run curl -X GET "https://data.eventures.vc/data-charts/v1/candidate/search?name_part=biden&name_part=yang&cycle=2020&token=<API_KEY>" -H "accept: text/csv".
cyclearray[integer]The election cycle(s) for the candidate. The cycle year is entered in the format yyyy. For example, 2020.

An election cycle is a 2 year period, for example, the 2020 election cycle is from January 2019 - December 2020.

You can also enter multiple cycles. For example, to query for the election cycle years 2020 and 2019, run curl -X GET "https://data.eventures.vc/data-charts/v1/candidate/search?name_part=biden&cycle=2020&cycle=2019&token=<API_KEY>" -H "accept: text/csv".

You can also run multiple candidate names for multiple cycles as parameters. For example, curl -X GET "https://data.eventures.vc/data-charts/v1/candidate/search?name_part=Biden&name_part=Yang&cycle=2020&cycle=2019&token=7wwBRAgtqqMui73WbpGgpf0TvQFm38W7379442" -H "accept: text/csv".

Response

Status: 200 OK
Response body: A downloadable CSV file.

access-control-allow-origin: * 
 content-disposition: attachment; filename="results.csv" 
 content-length: 94 
 content-type: text/csv; charset=utf-8 
 date: Fri, 31 Jul 2020 13:51:34 GMT 
 server: Google Frontend 
 status: 200 
 x-cloud-trace-context: 05095122c5b5f5981479ab1bb9c3e9ed;o=1 
Responses

Candidate and committee information

Description

Returns candidate and committee information for a given candidate.

Endpoint

GET /committee/candidate/search
curl -X GET "https://data.eventures.vc/data-charts/v1/committee/candidate/search?name_part=biden&cycle=2020&token=<API_KEY>" -H "accept: text/csv"
https://data.eventures.vc/data-charts/v1/committee/candidate/search?name_part=bide&cycle=2020&token=<API_KEY>

You can also run multiple candidate names for multiple cycles as parameters. For example, curl -X GET "https://data.eventures.vc/data-charts/v1/committee/candidate/search?name_part=biden&name_part=yang&cycle=2020&cycle=2019&token=<API_KEY>" -H "accept: text/csv".

Parameters

NameTypeDescription
name_partarray[string]The name(s) of candidate(s).

You can also enter multiple candidate names. For example, to query for the candidates biden and yang, run curl -X GET "https://data.eventures.vc/data-charts/v1/committee/candidate/search?name_part=biden&name_part=yang&cycle=2020&token=<API_KEY>" -H "accept: text/csv".
cyclearray[integer]The election cycle(s) for the candidate. The cycle year is entered in the format yyyy. For example, 2020.

An election cycle is a 2 year period, for example, the 2020 election cycle is from January 2019 - December 2020.

You can also enter multiple cycles. For example, to query for the election cycle years 2020 and 2019, run curl -X GET "https://data.eventures.vc/data-charts/v1/committee/candidate/search?name_part=biden&cycle=2020&cycle=2019&token=<API_KEY>" -H "accept: text/csv".

Response

Status: 200 OK
Response body: A downloadable CSV file.

access-control-allow-origin: * 
 content-disposition: attachment; filename="results.csv" 
 content-length: 327 
 content-type: text/csv; charset=utf-8 
 date: Fri, 31 Jul 2020 13:54:33 GMT 
 server: Google Frontend 
 status: 200 
 x-cloud-trace-context: 2482534e76fb240a35039222885e7d7b;o=1

What’s Next