It depends on the features of the gateway, but you can add or centralize various functions and not have to make them a part of every API ever. So you save in not having to duplicate that code as well as being able to change it everywhere rather than having to fix one API at a time. Okay, sure, maybe you had a library or something that each API used, but this does make managing it very simple and simple is good, especially if you have hundreds or thousands of APIs.
In the API Gateway I work with allows you to do authentication within the gateway and then delegate responses to the back end API (which can still have its own security, if you really want it, but usually is just hidden on an internal network). It works pretty much the same for other things like rate limiting. It also gives you monitoring for each API, again cutting down on the things you have to add to every single API by encapsulating the function in the gateway.
Also, you can separate your internal API and your external APIs. Maybe you have to always support certain operations to the outside world, but internally you'd really like to change something. By having them separate, you can create a policy within the gateway to change how the internal calls are done without changing the interface as far as the outside world is concerned.
You can also do various types of conversion (e.g. REST->SOAP) or even more exotic things so that outside devs don't have to care just how weird your damned mainframe is or other aspects of your internal architecture that they shouldn't know about.
The target market is, effectively, anyone who wants to expose internal APIs to the outside world.
Source: I work on an API Gateway and this is how our product works.