Developer Documentation
Platform Overview
API Services
Overview Accounts Accounts: Associations Accounts: Metadata Accounts: Profile Appstore: Users Broker Distributions Broker Tours Consumers Consumers: Linked Agents Contacts Contacts: Activity Contacts: Export Contacts: Tags Contacts: Portal Accounts Developers: Identities Developers: Keys Developers: Authorizations Developers: Billing Summary Developers: Change History Developers: Domains Developers: News Feed Webhooks Developers: Roles Developers: Syndications Developers: Templates Developers: Usage Detail Developers: Usage Summary Devices Flexmls: Email Links Flexmls: Listing Meta Origins Flexmls: Listing Meta Translations Flexmls: Listing Meta Field List Translations Flexmls: Listing Reports Flexmls: Mapping Layers Flexmls: Mapping Shapegen IDX IDX Links Listing Carts Listing Carts: Portal/VOW Carts Incomplete Listings Incomplete Listings: Documents Incomplete Listings: Documents Metadata Incomplete Listings: Document Uploads Incomplete Listings: Floor Plans Incomplete Listings: FloPlans Incomplete Listings: Photos Incomplete Listings: Photos Metadata Incomplete Listings: Photo Uploads Incomplete Listings: Rooms Incomplete Listings: Tickets Incomplete Listings: Units Incomplete Listings: Videos Incomplete Listings: Videos Metadata Incomplete Listings: Virtual Tours Incomplete Listings: Virtual Tours Metadata Listings Listings: Clusters Listings: Documents Listings: Documents Metadata Listings: Floor Plans Listings: FloPlans Listings: Historical Listings: History Listings: Notes Listings: Search Parameters Listings: Open Houses Listings: Photos Listings: Photos Metadata Listings: Photo Uploads Listings: Document Uploads Listings: Rental Calendar Listings: Rooms Listings: Rules Listings: Tour of Homes Listings: Tickets Listings: Units Listings: Validation Listings: Videos Listings: Videos Metadata Listings: Virtual Tours Listings: Virtual Tours Metadata Listing Meta: Custom Fields Listing Meta: Custom Field Groups Listing Meta: Field Order Listing Meta: Field Relations Listing Meta: Property Types Listing Meta: Rooms Listing Meta: Standard Fields Listing Meta: Units Registered Listings Market Statistics News Feed News Feed: Curation News Feed: Events News Feed: Metadata News Feed: Restrictions News Feed: Schedule News Feed: Settings News Feed: Templates Open Houses Overlays Overlays: Geometries Portals Preferences Saved Searches Saved Searches: Provided Saved Searches: Restrictions Saved Searches: Tags Search Templates: Quick Searches Search Templates: Views Search Templates: Sorts Shared Links System Info System Info: Languages System Info: Search Templates
Supporting Documentation
Terms of Use

How to Set Up API Access

Access to the Spark® API and our RESO Web API requires an API key. Follow these steps to request an API key for data access. If you have questions about these steps, please let us know at

  1. Register as an API developer
  2. Determine what kind of API key you need
  3. Check the Spark Datamart for an appropriate MLS data plan
  4. Enroll in a data plan
  5. Contact the MLS directly

1. Register as an API developer

Register as an API developer with us using this form. Doing so is free, and once your registration is activated (within 3 business days), you'll receive demo API credentials that can be used to retrieve some example data from the Spark API and our RESO Web API. Please note that this test access is only intended to give you a feel for how the APIs work, not what kind of data will be available to you with a live API key.


2. Determine what kind of API key you need

There are two parts to this: deciding whether you need a bearer token API key or an OpenID Connect API key, and determining which role your API key should have based on your intended use.

Do you need a bearer token API key or an OpenID Connect API key?

The vast majority of users need a bearer token API key, which has a non-expiring access token associated with a specific Flexmls user (or a generic agent). Bearer token API keys are available via the Spark Datamart.

An OpenID Connect API key allows multiple agents to authenticate using their Flexmls username and password, which grants the API key holder a temporary access token that can be used to make API requests as that agent. You'd only need an OpenID Connect API key if you:

If you need an OpenID Connect API key, please contact the MLS you intend to work with to obtain approval for an API key of the proper role (see step 5 below).

What role should your API key have?

The APIs use a concept of standard roles to manage what listings and what specific data are accessible with an API key. You will most likely need an IDX, Private, or VOW API key:


3. Check the Spark Datamart for an appropriate MLS data plan

The Spark Datamart allows registered developers to search for and sign up for data plans offered by MLSs. Different plans issue API keys with different roles and permissions. It is up to each MLS to decide what kinds of data plans to offer, and not all MLSs offer data plans.

To view the Spark Datamart:

  1. Log in at this link, using your developer username and password.
  2. Click on the "Datamart" link near the top left. You will have to enter a payment method if you have not done so already. The payment screen drops you off in the app store when you're finished entering your details, so once it does, go back to the Datamart at
  3. Search for the MLS you want data from in the top left search bar and review the available data plans.

An Agent or Broker's Own Data

In addition to plans for different roles (IDX, VOW, Private), you may also see plans for "A Broker or Agent's Own Data". These plans issue a Private role API key, but with the restriction that it can only pull data from listings for which the given Flexmls user acted as the listing or selling agent. You can enroll as a member, office, or company Flexmls user. If you sign up with an office account, all listings for which an office member acted as the listing or selling agent will be available. If you sign up with a company account, all listings for which a company member acted as the listing or selling agent will be available.

Does the MLS you need access to offer a data plan for the kind of API key you need?


4. Enroll in a data plan

Once you've found a data plan you wish to enroll in, click its "PLANS & PRICING" button to bring up additional information.

  1. Review the description, pricing, and terms, then check the "I accept the Terms and Conditions." box.
  2. Some data plans offer an option to sign up without specifying a Flexmls username. If that's the case, you'll see the following options:

    • "I am requesting data to build a site or app for a specific broker or agent."
    • "I am requesting to build sites or apps for multiple brokers or agents in the MLS."

    If you choose the second option, your API key will be linked to a "generic agent" rather than one specific user.

    Other data plans don't have this option and require you to provide a Flexmls username to enroll. Choose the appropriate option and/or enter the Flexmls username the API key should be tied to.

  3. Fill in the box that says "Briefly describe what you are creating with the data, how you are using the data, and who will have access to the data."
  4. Finally, click the "PURCHASE WITH APPROVAL" button. This will trigger an email approval chain with the MLS administration, and once that is complete you'll receive credentials for an API key by email.


5. Contact the MLS directly

If you have checked the Spark Datamart and confirmed there are no plans that meet your needs, you'll need to contact the MLS directly to request an API key. How, whether, and to whom an MLS issues API keys is up to each MLS. With your request, be sure to include the following information:

If there are any questions, feel free to loop in Please also email us there if an MLS approves you for an API key but does not set up the API key themselves. We can only issue API keys with an email stating approval from an authorized MLS admin.