Reverb Coding Challenge

Welcome! This technical challenge is our way to start a conversation around modeling, maintainability, and tradeoffs. This isn't a test with correct answers.

The Problem

We provide an API for developers to create new experiences powered by Reverb. We'd like you to use this API to build a program with the following features:

  • Category Search — Given a string, return all categories that contain that string. For example, a search for the category "Electric" would match "Electric Guitars", "Electric Pianos", etc.
  • Show Listings — In pages of 10 results, return all listings. If the user includes a category, limit the listings to those within that category.


We're deliberately vague on the implementation details of this program. If you're most comfortable with backend programming, please build this as a library for your favorite programming language. If you're happiest in the frontend, please build this with a user interface instead. Regardless of your choice, there should be some interface (GUI, commandline, etc) for us to evaluate your submission.

Aim to spend no more than 3-4 hours working on your program. Also, there is no "extra credit" for this challenge so don't feel the need to create a beautiful interface – this isn't a test of visual design.

Use the programming language and tools of your choice to complete this. Please provide a README that includes details on installing the required languages, tools, packages, and testing frameworks for evaluating your program.

When you come onsite for an interview with us, expect to extend or modify this solution with new features. We'll also ask you to talk a bit about your program and your feedback from using the Reverb API.

Documentation on our API is available at

Our Criteria

We believe in transparency, so here's the criteria we'll be using to evaluate each submission:

  • Functionality — Does your program work when we run it according to the instructions in the README? Does it implement the features listed above?
  • Modeling — How do you model the Reverb API in code?
  • Documentation — Does your README include everything we need to set up, run, and understand your submission? Is your code appropriately documented?
  • Language Use — Do you make good use of the features available in the language you chose?
  • Testing — Did you include tests that explain and reinforce the design of your code?

Good luck!